怎么用PHP,JS和Token做安卓应用?

是这样的,本人想用html/css/js来做一个Android的Hybrid APP,用的是Cordova来包装。
至于Server方面则是PHP。

我想用Token来替代Session来判断用户是否登录,因为完全就是个小白,第一次接触Token,不清楚流程。

**我的问题将(括号)起来**

我的设想是这样:
1. 用户点击登录后,用Ajax发送用户名和密码到Server,判断用户信息无误后php生成一个Token(怎么生成?需要拿用户信息来生成吗?需不需要加密?怎么加密?)。

2. 然后生成的Token存在数据库,再把Token传回给用户APP(用什么传,JSON安全吗,怎么确保Token不被截取,或截取了也没办法干什么坏事),并储存在APP本地。

3. 登录后跳转到新的页面,新的页面一开始就会Ajax发送存在本地的用户名和Token,如果Token和数据库的不相同就会被取消登录状态,跳转回登录页面。(Token需不需要一段时间更新一次,还是待到用户下一次登录的时候才更新?如果需要更新,那么推荐的更新间隔时长是多久?)
4. 用户的每个会与Server进行沟通的操作都要进行Token验证【如第三步】。(需不需要每个操作都验证,这样会不会照常Server和Database的负担,最重要的是用户APP方面效率会不会很差?)

希望有人帮帮我这个小白,网上搜寻了很多都找不到我想要的答案。。。

推荐  (0) | 5人关注关注
3个答案
17 0

Rastlin性能控,泛ACG爱好者

2015-10-27 23:45

LZ好像对SESSION有些误解,或者我没有理解为什么不使用SESSION的需求,如果可以的话能告诉我么?

1.事实上,token本身就是一个加密后产生的证明,你在AJAX POST提交之后会按照一定规则生成这个token然后回传,理论上来说HTTPS加密会比HTTP更安全,但是这不是你不去增加安全机制的借口。鉴于你自己说是新手,我不建议你自己去写一个TOKEN的生成规则,用框架现有的东西去做会比(至少你声称的)当前水平写出来的东西安全,具体情况请参阅你现有框架手册。

2.同样的道理,你在AJAX提交的时候便生成了TOKEN及SESSION(其实不冲突,TOKEN是一个令牌,而SESSION本质上是存储在服务器端的东西,两个的区别就是SESSION是真家伙而TOKEN是生成或者提取SESSION内容的凭证),然后通过某种手段返回给APP本身,然后本地记录。

JSON只是一种形式,本身并不存在安不安全的说法。比如你在验证时需要TOKEN及用户ID来验证,那么在返回的JSON中就不要写用户ID而是用本地的ID来进行操作。这样截取了TOKEN不知道用户ID就没卵用。

3.视情况而定,逻辑上是和SESSION时间一致,其实安全问题没你想象的那么凶。

4.担心DB的IO操作影响性能可以将SESSION存储改至内存映射降低DB开销,非关键性操作验证SESSION ID就行。

15 0

1.需要加密,而且最好使用https协议.

2.https的请求都是经过加密的,不怕中途拦截.建议把token放在请求头里不要放在url上,因为url不能加密.传送格式本身和安全无关.

3.token需要更新.可以考虑保存用户名和密码在客户端, 过了更新时间以后的请求在后台再做一次登录动作.

4.看应用规模,如果是规模小token怎么存都无所谓,如果规模大就上缓存(redis等).编码的时候注意做适当封装,方便将来切换存储方式.token验证是会增加server端负担,但session也会,两者的负担差不多(session某种意义上看就是token).

建议看一下RESTful风格并按此组织server端服务, 推荐阮一峰老师的博客http://www.ruanyifeng.com/

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区