今天早上,我和我的同事继续讨论存储auth cookie的时间 RememberMe = false。
MVC4,Forms Authentocation,C#.Net,Visual Studio 2012,IIS 7.5,InProcess Session
用户登录,(RememberMe = false)并导航到app中的项目。默认会话timeOut设置为30分钟,
用户复制URL并关闭浏览器(IE9)
打开新浏览器(IE9)并粘贴复制的URL,UI重定向到loginPage。
这里我说在步骤1中创建的会话仍然有效。在浏览器关闭时,浏览器丢失了AuthCookie。
他说该会话也是基于浏览器会话创建的。我有点困惑。
请让我知道实际发生了什么。
抱歉英文不好
答案 0 :(得分:3)
RememberMe = false表示发给用户的身份验证cookie不是持久性的(cookie的过期设置为“SESSION”)。也就是说,当浏览器会话结束时cookie就会丢失。 RememberMe = true表示创建持久性cookie并在多个浏览器会话中保存(cookie的过期设置为特定日期,通常在web.config中配置)。
答案 1 :(得分:0)
我假设你正在使用默认的Session-State Mode,即InProc。会话生成SessionID,此ID存储在cookie中。此cookie将发送给用户,并且在使用该cookie发出请求时,会话仍处于活动状态。 ID本身标识了唯一的浏览器,这就是当您同时使用两个不同的浏览器时,您可以使用不同的帐户登录同一网站的原因。但是,您无法从同一浏览器的不同标签中登录不同的帐户(除非该网站专门定制了其网站以支持该功能)。
通过关闭浏览器,此cookie将被删除,因此会话将在达到其超时时间后结束。您进入UI页面的原因是因为新的Cookie不再具有相同的会话ID,因此,无论出于何种目的,您都是新用户。