好吧我很困惑,asp.net中的FormsAuthentication.SetAuthCookie()是否创建了基于会话的cookie?从我收集的东西到会话中你会在后面的代码中做这样的事情:
Session["userAge"] = 25;
现在无论是否创建了cookie,它都可以作为服务器端,所以我很困惑,当我读到你可以有会话和无会话cookie时,如果是这样,你如何创建每个cookie以及如何访问.net中的cookie中的esssion变量
答案 0 :(得分:21)
这是一种常见的混淆。 Session和FormsAuthentication是两个独立的概念 - 它们具有独立的超时和独立的cookie(如果你使用的是无Cookie会话,则没有cookie。)
服务器上的会话由唯一的cookie标识,即使对于匿名用户也是如此。此cookie包含与FormsAuthentication无关的SessionID。
FormsAuthentication cookie包含许多内容,其中最重要的是身份验证票证。此票证是一个加密的信息位,用于根据提供的登录凭据标识用户。有一个很好的分步流程图和解释票据in this MSDN article中的内容。
答案 1 :(得分:2)
我不确定你问的是什么,但如果你的问题是如何在没有auth cookie的情况下访问Session["userAge"]
,答案是因为它是与会话分开的实体。
auth cookie(默认名称.ASPXAUTH
)是在会话开始之前创建的,因此它不能基于会话。