我很确定我没有一个独特的问题,但我搜遍了谷歌和这个网站,我找不到一个可靠的答案,我正在寻找什么。所以我想解释一下自己是否可以在这个问题上得到任何帮助:
我们(我的同事和我)确定我们需要无Cookie会话,因为我们的用户需要多个会话才能以更高效的方式完成工作。
示例
Bob用户可能已经在窗口A中启动了长时间运行的进程,并且为了继续工作,Bob将打开生成新会话的窗口B.为了不打扰窗口A中发生的事情,这是必要的。每次Bob打开一个新窗口时,他都必须再次登录。
问题
我不确定这是否是一个真正的问题,因此我的理由是。我发现的问题我发现,每次Bob登录时,都会覆盖当前的表单身份验证票证(和Cookie)。现在我不明白这是怎么回事,或者为什么在Bob第二次登录后,之前的Session / Window组合仍然有效。由于票证被覆盖并不意味着第一个会话/窗口组合应该结束,因为票证不再有效?这是关于:
Request.IsAuthenticated //Making sure the supplied ticket is valid
问题
因为表单身份验证故障单(和Cookie)被覆盖了,这意味着什么?
在登录期间,我是否应该拦截故障单(如果有)并检查其是否到期?如果它没有过期我应该尝试更新机票还是只换新机票?
FormsAuthentication.RenewTicketIfOld(ticket) //Just an example
如果我使用的是无cookie会话,我是否也应该使用无cookie的表单身份验证?这样做的目的是使每个会话/窗口100%彼此独立。不会再发生过度写作了。有没有退缩?我想不出任何。
PS:我知道cookie只是存储在其中的容器,就像键值对一样。
Additonal Info ...
表单身份验证故障单:
IsPersistent设置为true
机票版本2
表单Cookie:
Key = FormsCookieName(来自web.config标签)
价值=哈希票据
Web.Config中:
<sessionState
cookieless="true"
mode="SQLServer"
sqlConnectionString="..."
timeout="300"
regenerateExpiredSessionId="true" />
<forms name="FormsCookieName"
path="../"
loginUrl="Login.aspx"
protection="All"
timeout="300"
slidingExpiration="true" >
</forms>