如何检查用户是否已通过身份验证。Asp.net 告诉我,如果设置了 cookie,用户已获得授权,但我需要检查我的数据存储中是否有该用户的名称。我在哪里可以添加额外的支票?
1 回答
你应该使用:Request.IsAuthenticated
在此处查看 MSDN 。
此外,下面是从问题中得到的一个很好的解释:Request.IsAuthenticated 是如何工作的?
Request.IsAuthenticated 不仅用于表单身份验证 - 无论使用哪种类型的身份验证(Windows、Passport、Forms 或我们自己的自定义方案),它都是有效的
当发出请求的用户已通过身份验证时,HttpRequest.IsAuthenticated 将为真。本质上,此属性提供与 Context.User.Identity.IsAuthenticated 相同的信息。
在请求开始时,Context.User.Idenity
包含一个带有空用户名的 GenericIdentity。此对象的 IsAuthenticated 属性将返回 false,因此Request.IsAuthenticated
将为 false。当身份验证模块处理Application_AuthenticateRequest
事件并成功验证用户身份时,它会将 GenericIdentity 替换Context.User.Identity
为新的 IIdentity 对象,该对象将从其IsAuthenticated
属性返回 true。Request.IsAuthenticated
然后将返回 true。
在 Forms 身份验证的情况下,forms 身份验证模块使用身份验证 cookie 中包含的加密身份验证票证对用户进行身份验证。完成此操作后,它将 GenericIdentity 替换为从其 IsAuthenticated 属性返回 TrueContext.User.Identity
的对象。FormsIdentity