登录是用cookie还是session实现,一直有争议,普遍认为session更安全,可是有些功能,用cookie最方便也最高效,比如“记住我一周”。
cookie还是session,我的答案是两者共用,具体方案是:
1 首先,我们知道,登录的账号跟密码,是用户提供的。我们顾忌使用cookie主要是担心用户修改cookie的值,然后获得不应该获得的权限。既然账号密码是用户自己的提供的,就不怕ta修改了,所以,账号密码这两个东西可以存到cookie上面去。
2 服务端程序的权限判断还是使用session的值,cookie只存账号密码,作自动登录用。比如浏览器被关掉了,重新打开的时候,就用到了cookie里面的账号密码来自动登录,而不需要用户输入。
小结:关键点在于cookie只存放账号密码,用作自动登录。
-- 案例:
我使用memcache来存储session,使用session来控制登录,运行的过程中总是会出现一些问题:
1 memcache的过期时间问题,导致不知道30分钟还是一个小时,登录就掉线一次。
2 memcache的设计本就是针对缓存的,所以是不严谨的,偶尔还会丢数据的,这样又掉线了。因为这个问题,网上有很多文章说不要使用memcache来存储session。
后面我引入了cookie的解决方案,使用cookie缓存了账号密码,程序会在session失效是时候判断cookie,如果cookie里面存在账号密码,就会自动登录,让用户感觉不到掉线。存放账号密码的cookie,我设置的过期时间是24小时。