首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测用户何时登录?

如何检测用户何时登录?
EN

Stack Overflow用户
提问于 2013-06-11 10:50:36
回答 2查看 95关注 0票数 0

我目前正在做一个小的即时通讯项目。到目前为止,一切都进行得很顺利。

唯一的问题是安全性。当有人登录时,会设置2个cookie。

代码语言:javascript
复制
1) Name: loggedin; Value: {username}  
2) Name: mvc; Value: {userSecretKey}  <-- pretty useless

这些是我使用的cookie,以便我可以设置下一页。然而,我相信有一种更好的方法来做到这一点。不,我不想使用会话,因为我有一个“记住我”的功能。

有些人可以自己设置cookie并“登录”,而不是真正登录。

设置它的更好方法是什么?也许是什么换钥匙的事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 09:55:18

我建议将PHP Sessions与纯用于记住我功能的cookie一起使用。你可以这样设置它:

  1. User logs in
  2. 您将用户IP和用户代理存储在session
  3. 中如果启用了remember me,请使用用户id、用户的唯一随机id + IP和useragent创建一个新的数据库条目,然后添加引用该唯一随机ID的cookie。
  4. 每次访问会话时,请检查请求IP和Useragent是否与用户登录时在会话中最初设置的IP和Useragent匹配。
  5. 用户关闭浏览器后返回时,将只留下remember me cookie。将请求IP和用户代理与数据库
  6. 中的IP和Useragent进行比较。如果它们匹配,请将它们重新登录到数据库中。

干杯!

票数 1
EN

Stack Overflow用户

发布于 2013-06-11 11:14:55

你仍然可以使用PHP会话,即使有‘记住我’的功能。您只需使用用户in或用户名设置cookie,然后,如果他们没有登录并且cookie存在,则从cookie中读取他们的信息并将其登录。

让您的逻辑检查用户是否已登录,检查已登录用户的活动会话。如果不存在,则重定向用户登录。在您的登录逻辑中,检查是否设置了“记住我”cookie。如果是,请使用cookie让用户登录。如果cookie不存在,请在表单中提供日志。

对于安全位,您可以使用get在用户登录时重置的密钥。这是可劫持的吗,是的,但如果你不断改变密钥/令牌,劫持的窗口应该很小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17035811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档