asp.net - ASP.NET_SessionId与.ASPXAUTH为什么我们都需要它们?

标签 asp.net asp.net-mvc-3 asp.net-mvc-4 asp-classic

如果用户未登录,我们是否只能存储在 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/

相关文章:

asp.net-mvc - 值得关注的优秀 ASP.NET MVC 项目,用于身份验证和 cookie 管理

asp.net-membership - MVC4 的 ASP.NET 成员资格

c# - 如何制作所有文化的下拉列表(但不重复)

c# - 代码中的问题添加到同一个 div 中?

c# - MVC - 字符串或二进制数据将被截断。\r\n语句已终止

c# - 如果列表返回空显示信息

c# - 使用 Entity Framework 向下转型

ASP.NET 调试器在使用 https 时出现 http 错误

javascript - window.location.hash 返回值前面的散列标签

asp.net-mvc-4 - ASP.NET MVC : When does script bundling decide to change the version of a bundle?