84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
如何保持app的登录状态并且控制访问呢?新手很疑惑,我知道可以用key chain 来保存用户名和密码,每次调用出来登录。登录之后可以做一个token,每次需要访问数据库的时候,验证token。
问题是,我看有些教程制作token的时候,将用户名,密码,还有一大堆信息都使用进去了,这样导致token的长度很长。并且此时token已经包含了用户名和密码这种关键信息,再非https传输的情况下,和每次都都要验证用户名+密码的方式有什么区别呢?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
在非https的情况,token通常是把用户的信息进行加密后得出来的一串码。例如简单的:token = md5(username+password),那么我们在和服务端通信的时候,就会把token和username一起传给服务端,服务端拿到username以后,从数据库查询到对应的password,然后再md5(username+password),与客户端传过来的password进行比较。token通常是登录的时候,服务端返回给客户端的,客户端保留token,也就意味着保持了app的登录状态。
无非就是给每个用户分配一个唯一标识,你说的
将用户名,密码,还有一大堆信息都使用进去了,这样导致 token 的长度很长。并且此时 token 已经包含了用户名和密码这种关键信息
这个问题完全不用考虑。因为你完全可以用 userId+时间戳后 base64 混淆后的字符串作为你的 token。这样 token 既不会很长,也不怕中间传输时被拦截。
在非https的情况,token通常是把用户的信息进行加密后得出来的一串码。例如简单的:token = md5(username+password),那么我们在和服务端通信的时候,就会把token和username一起传给服务端,服务端拿到username以后,从数据库查询到对应的password,然后再md5(username+password),与客户端传过来的password进行比较。token通常是登录的时候,服务端返回给客户端的,客户端保留token,也就意味着保持了app的登录状态。
无非就是给每个用户分配一个唯一标识,你说的
这个问题完全不用考虑。因为你完全可以用 userId+时间戳后 base64 混淆后的字符串作为你的 token。这样 token 既不会很长,也不怕中间传输时被拦截。