在示例/默认MVC 4项目中,我可以看到当用户使用Remember Me
复选框登录时,WebSecurity.Login方法的persistCookie参数设置为true。
究竟是如何运作的? persistCookie的值究竟在哪里保存?我浏览了为安全性功能创建的表,但没有看到用户设置为持久登录的任何地方。
哪种机制可以让用户登录?它只是存在.ASPXAUTH cookie吗?或者它实际上是将cookie值与我没有看到的东西进行比较。
答案 0 :(得分:4)
这究竟是如何运作的?
保存persistCookie的值究竟在哪里?
作为客户端计算机上的文件,以便在浏览器重新启动后继续存在。
用户可以使用什么机制登录?
此机制称为persistent cookie
。如果在设置时将Expires
属性设置为将来某个日期,则cookie被视为持久性。在这种情况下,浏览器会将cookie作为文件存储在客户端计算机上,而不是将其保存在内存中。
以下是根据HTTP协议创建持久性cookie的示例:
Set-Cookie: CookieName=CookieValue;Path=/;Expires=Wed, 12-Oct-2016 21:47:09 GMT;
以下是设置会话cookie的方式,它不会在浏览器重启后继续存在:
Set-Cookie: CookieName=CookieValue;Path=/;
现在继续,下载Fiddler
并检查网络流量以查看差异。
答案 1 :(得分:1)
身份存储在cookie中,并在每次请求时解密。
持久性cookie意味着cookie会在一段时间内自动附加到浏览器的请求中。
没有魔力,也无需在服务器端存储打开的会话。只要cookie正确解密,就会被接受,因为服务器假定没有人能够自己伪造cookie。这要求cookie值加密或至少签名。