我想我想出了怎么做的办法
当我的用户连接时,在检查他是否有好的用户名/密码后,就会创建一个会话密钥(随机长字符串)并放入DB中。在会话中放置相同的session_key。
如果用户在没有关闭登录的情况下退出我的应用程序,当他回来时,如果他的session_key与DB中的一个匹配,那么用户就可以作为拥有该session_key的用户进行连接。如果没有,则会话将被关闭,用户将被重新路由为登录。如果没有问题,将创建一个新的session_key (替换旧的)。
我觉得没问题,除了两件事:
-How我能让session_key在一段时间后从DB中消失吗?我想我应该在服务器上执行一些代码,但是如果在某个时刻没有人使用我的应用程序,我如何在服务器上执行代码呢?
-If --这只是session_key,可以使用内置的cookie吗?
-Is可以只检查DB中是否有与会话中的session_key对应的session_key,还是应该使用其他方法来确保?我将生成一个随机的长字符串,并以密码的方式加密它,所以我认为它是足够安全的,而且session_key不太可能是相同的。
使用用户名从DB获取数据的-insteed,使用session_key (getStuffBySessionKey())可以吗?
发布于 2016-01-27 20:25:07
如果我的用户访问cookie并更改用户名怎么办?
没有必要将用户名存储在cookie中。cookie应该只包含会话密钥信息。当用户尝试登录时,您将通过db查询从其中获取用户名。如果用户更改了cookie中的会话键值,那么它将不再匹配数据库中的活动会话,他们将不得不重新登录。这和清理饼干本质上是一样的。
除了用户名和session_key之外,我还将把用户权限放在cookie中。我将需要它知道用户是管理,创建者或访客。
它们也应该存储在数据库中,而不是存储在cookie中。
有没有其他方法来检查用户是否还在应用程序中没有尝试更改任何内容?
不,您应该对用户的每个请求检查有效的、活动的会话。如果没有会话cookie,或者cookie与有效会话不匹配,则将它们重定向到登录页面。
正如其他人所指出的,您最好使用PHP的内置会话来解决所有这些问题。
https://stackoverflow.com/questions/35047161
复制相似问题