首页 新闻 会员 周边

请问网站如何做到保持身份状态一个月以上的?

0
悬赏园豆:10 [已解决问题] 解决于 2016-08-10 18:11

 小弟在学web 身份验证和授权方面的知识,但是有个问题一直很迷惑

看了很多资料 保持身份状态(下一次访问网站无需再登陆) 使用Cooike和Session来保持身份状态的

但是我看了下 Session资料 这个服务器缓存 默认只保存2个小时啊! 那比如博客园和其它的网站是如何把身份状态保持在1个月以上的呢? 还是我理解错了呢?望有经验的大神科普下

狂扁小朋友的主页 狂扁小朋友 | 初学一级 | 园豆:10
提问于:2016-07-30 22:00
< >
分享
最佳答案
1

cookie 设置时间 只要不清空本地缓存 就可以一直存在

收获园豆:10
小眼睛老鼠 | 老鸟四级 |园豆:2731 | 2016-08-03 17:14

 意思是不需要服务器缓存对吗?

狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-03 22:19

@狂扁小朋友: 服务器缓存 除非是 分布式缓存 一般的其他的缓存 重启 机器后就会消失

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-08-04 14:34

@狂扁小朋友: 具体的数据可以通过服务器去取 但是 状态 和标记值 可以放到cookie里面

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-08-04 14:50

@小眼睛老鼠: 

我一直以为 服务器也要缓存一个标识  看来貌似不用 

我最开始理解为  浏览器只存储一个身份标识的Cookie  然后每次浏览器带上这个标识 我再根据这个标识匹配存储在服务器里的缓存标识以此来查询缓存的用户身份对象

狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-04 14:53

@狂扁小朋友: cookie 缓存只是个容器

你可以在这里面 存一个标记 例如id

也可以存一个序列化过的对象

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-08-04 17:56
其他回答(4)
0

Cooike token可以实现永久

刘宏玺 | 园豆:14020 (专家六级) | 2016-07-30 23:54

我知道Cookie时间可以设置很长 但是关键是Session只能保存2个小时啊 比如每一次浏览器访问都会带上这个标识Cookie 我会和Session里面的标识匹配啊 

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-07-31 09:15

@狂扁小朋友: 你就不会自己写个cookie.然后把cookie的值放数据库啊

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-31 10:03

@吴瑞祥: 其实我想问的是 你们平时是怎么做的呢?  我最近在使用ASP.NET Identity框架  但是这个是基于OWIN中间件的 封装的太厉害 我看不到原理  它就没存储在数据库里 但是依然可以保存很久 我一直不知道它是如何做到的

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-07-31 20:43

@狂扁小朋友: 谁告诉你他没有存在数据库里....

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-31 21:35

@吴瑞祥: 我测试了 确实没在数据库里 貌似存储在IIS里面 因为我把IIS重启   那个身份状态就不存在了

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-07-31 21:45

@狂扁小朋友: 你试试选中那个记住我.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-31 22:43

@吴瑞祥: 我已经确认了 昨晚上把源码看了一遍 确认它没有存储Cookie到数据库  它只存储在浏览器 发生在第一次登陆的时候 那个Cookie加密的 保存的有除密码外用户等信息

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-01 13:56

@狂扁小朋友: 我一直以为是通过那个login表的.原来是直接cookie的..

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-08-01 18:35
0

cookie 有个过期时间。想设置多长就多长

如果是forms验证授权。就在web.config中配置这个时间就可以了

czd890 | 园豆:14412 (专家六级) | 2016-07-31 00:14

我知道Cookie时间可以设置很长 但是关键是Session只能保存2个小时啊 比如每一次浏览器访问都会带上这个标识Cookie 我会和Session里面的标识匹配啊 

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-07-31 09:15

@狂扁小朋友: 

我想,你这个理解错了。

forms方式的authentication。使用cookie加解密的。你服务器重启。登录信息也还是在的。

如果你是有自定义的逻辑在里面,可以重写系统的formsauthentication模块。加入你自定义的代码。比如往session里面写入点什么。

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-08-01 13:43

@calvinK: 意思是只使用Cookie存储客户端  服务器不需要存储任何信息吗? 可能我理解有点错了 我一直认为服务器Session里面存储的有用户的一些信息 比如用户名 角色之类的 而浏览器只存储一个Cookie凭证 每次浏览器带上这个凭证 我再去匹配 查看用户的名称 角色等

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-01 13:47

@狂扁小朋友: formsauthentication和session没有任何关系。他不依赖session

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-08-01 13:49

@calvinK: 你说的是MemberShip那个表单认证框架吗? 确实 我现在学习Identity框架 我查了源码没有Session的 它是只存储了Cookie

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-01 13:54

@狂扁小朋友: membership,identity,还是其他的。都是forms验证方式。都是用的cookie

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-08-01 14:29
0
localstorage也可以
陈小银 | 园豆:202 (菜鸟二级) | 2016-08-01 01:03

localstorage是什么概念呢?

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-01 13:45

@狂扁小朋友: 是H5的本地存储,永久性存储

支持(0) 反对(0) 陈小银 | 园豆:202 (菜鸟二级) | 2016-08-01 23:30
0

用cook保存,设置过期时间为你想要的不久可以啦

大黄人 | 园豆:641 (小虾三级) | 2016-08-03 10:46

我一直以为 服务器也要缓存一个标识  看来貌似不用 

我最开始理解为  浏览器只存储一个身份标识的Cookie  然后每次浏览器带上这个标识 我再根据这个标识匹配存储在服务器里的缓存标识以此来查询缓存的用户身份对象

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-04 14:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册