如果用户未登录,我们是否只能存储在 session 中并摆脱.ASPXAUTH?
最佳答案
ASP.Net_SessionId
是一个cookie,用于标识服务器上的用户session。 session 是服务器上的一个区域,可用于在http请求之间存储数据。
例如, Controller Action 可以执行:
Session["FirstName"] = model.FirstName;
然后,在后续操作中,可以从 session 中检索名字:
var firstName = Session["FirstName"];
ASP.Net_SessionId标识该用户请求的 session 。不同的用户将提交不同的cookie,因此
Session["FirstName"]
将为该不同的用户保留不同的值。ASPXAUTH
是一个cookie,用于识别用户是否是authenticated(即,是否已验证其身份)。例如, Controller 操作可以确定用户是否提供了正确的登录凭据,如果是,则发出身份验证cookie using:FormsAuthentication.SetAuthCookie(username, false);
然后,稍后您可以使用[Authorize]属性检查用户是否被授权执行操作,该属性检查
ASPXAUTH
cookie的存在。因此,总而言之,cookies存在于两个不同的目的。一种确定用户的 session 状态,另一种确定用户是否已通过身份验证。
是的,要完成问题的答案,可以,您可以摆脱
ASPXAUTH
cookie并仅使用 session 来标识用户(我已经在较旧的经典asp应用程序中看到了这一点),但我不建议这样做。更好地分离关注点并在必要时使用适当的方法要好得多。 session 和身份验证将设置自己的超时值。通过使用 session 进行身份验证,您将只有一次超时。我不确定仅在使用 session 进行身份验证时是否存在任何安全隐患,但是我仍然将它们分开。
关于asp.net - ASP.NET_SessionId与.ASPXAUTH为什么我们都需要它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23758704/