thinkphp 下保持用户在重启浏览器之后,还能保持之前登录的状态,我现在是用 cookie+session 进行验证。不知道服务器端如何保持 cookie 的值。

2014-03-04 16:12:49 +08:00
 no13bus
思路大概是这样的。
用户登录后,session['uid]赋值为用户的uid, session['username']赋值为用户的username.同时在浏览器端产生一个cookie,$aaaa=session['uid'] . ':' . session['username']
cookie['auto']=$aaaa
然后下次用户登录的时候检验 他的浏览器发送的cookie里面有没有auto这个key,有的话说明登录过了,直接在数据库找到,然后赋值session的相关值,让其登录。但是这样的话,不太安全。我想的是确保用户发送的cookie有auto这个key,并且cookie['auto']的值确实是
之前的$aaaa。但是之前用户第一次登录的时候,这个$aaaa值怎么保存呢?如果不存在数据库里面,怎么才能在下次登录浏览器的时候还存在呢。用$_GLOBAL超全局变量不行呀。
3674 次点击
所在节点    问与答
10 条回复
no13bus
2014-03-04 18:24:04 +08:00
没有人知道吗?
66beta
2014-03-04 18:35:13 +08:00
貌似~~
服务器端是session,不存cookie
浏览器端是cookie

cookie加密,跟服务器的session做校验?
no13bus
2014-03-05 07:34:50 +08:00
是吗?是我问的问题太简单吗?
zxb888
2014-03-05 10:41:20 +08:00
我最近刚做过的:用户登录检验后,把session['key']加密保存在cookie中,并在memcache中保存一个key。
下次浏览时,把memcache保存的key与session['key']比较,如果相同,用户处在登录状态,如果不同,提示用户重新登录。使用场景类似微信登录情况。不知你是想在何场景下使用?
no13bus
2014-03-05 13:38:10 +08:00
@zxb888 就是个论坛 类似v2ex 因为每次我打开浏览器的时候 我的v2ex都是在登录的。呵呵。那保存这个数据出了memcache,我觉得这种验证的东西只能放到数据库里面 mysql redis memcacheed。像php的$_GLOBAL是不能永久保存这个验证值的吧????有人说python的flask框架里面g变量能做到memcacheed这样的作用,重启浏览器之后还能保存着那个值。
zxb888
2014-03-05 14:20:00 +08:00
@no13bus $_GLOBAL当然不能永久保存!!python我不懂。看你说的每次都是要登录,说明session没有起作用。估计还不太明白session的用途,建议找些session资料看看!方便的话,你把登录验证后给session赋值的程序片段贴上来看看。
no13bus
2014-03-06 21:21:25 +08:00
@zxb888
下面这个是每个控制器都会继承的类 也就是登陆验证时候要用到的。
https://gist.github.com/9389531.git
no13bus
2014-03-06 21:23:15 +08:00
重发一次 刚才格式看着不对。
https://gist.github.com/9389531
no13bus
2014-03-06 21:25:29 +08:00
@zxb888 这个是登陆进去之后进行的验证。
https://gist.github.com/9389605
zxb888
2014-03-09 08:04:36 +08:00
cookie('auto',$auto,3600);这是你每次都要登录的问题所在!
但是你整个登录的流程存在明显的漏洞,我只要知道某用户的uid和username,我就能登录!!!
实际上你的系统,根本用不到cookie。
session一般来说是保存在服务器端的(也可以自己定义保存在cookie里);cookie是保存在浏览器端的。浏览器端的cookie是可以伪造的。
建议找些php的session的资料和登录的源码先琢磨一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/102831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX