手机端记住密码(登陆状态)实现下次自动登陆的问题?

两种方案:

  1. 保存用户名和密码(加密过的),保存在cookie;

  2. 记住当前登录IP,下次登陆去数据库验证当前登录IP实现自动登陆;

请问,以上,哪种方案好一点?
手机端和PC端的记住密码方式是一样吗?

有更好的方法,请指教。


手机端指的是wap网页(响应式,嗯)。


看了2、3、4楼的回复,总结了一下差不多是按照cookie+token+user_info+time+sql这样的组合方式实现。可以,你们都很强势。谢谢各位的回答。(Thank.jpg)

阅读 8.1k
4 个回答

你这两种方案都不怎么样。

第一种稍微靠谱,要想好你要怎么加密,会不会被破解,用户改名了或者改密码了该怎么办?

第二种就更离谱了,一人记住密码全校/全家自动登录?IP变化了怎么办?

手机端和PC端的记住密码的原理是一样的。

就是登录成功后生成一个很长的随机字符串(100+位)保存在Cookie(要记得设置httponly属性,并且推荐使用SSL),假设有效期30天。

然后服务器那面把这个随机字符串+过期时间+对应哪个用户ID 写入数据库。

用户再次访问的时候,服务器拿到Cookie,查询记录,验证过期时间,恢复session,如果无效/过期,抹除Cookie并弹出登陆页面。

要注意的是,如果用户重设了密码,要顺便把数据库相应用户的自动登录随机字符串的那条记录删掉。

另外要记得设置计划任务,把数据库已经过期的记录删掉。

给个参考吧:

先准备一个带密钥的可逆加密函数,网上随便搜一个都可以。

把用户名,获取到的客户端操作系统,登录时间组成一个json字符串,通过加密函数密钥加密后存到cookie中。

判断的时候取出cookie,通过密钥解密后取出用户名和记录的操作系统,判断取出来的操作系统是否和现在的一致,登录时间根据需求确定是否判断。

加入操作系统判断只是简单的增加cookie窃取盗用的难度,你也可以获取一些其他的客户端信息记录下来判断。

ip肯定不靠谱,很多人是共用相同ip上网的…
cookie足够了

你是app还是wap网页。。。接口是什么形式的 这些你得描述清楚

首先 要是app cookie的话是不靠谱的

ip也不靠谱

我们的解决办法是使用 在数据库存一条记录 使用唯一设备码和用户信息和加密方式(就是俗称的token)去验证你的记住密码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题