Fre*_*ias 1 asp.net-mvc asp.net-identity
我正在使用ASP.Net Identity来管理我的用户.
在调用以下内容后我发现:
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, identity);
Run Code Online (Sandbox Code Playgroud)
当我检查用户当前是否通过HttpContext.Current.User.Identity.IsAuthenticated它进行身份验证返回false.
我设法true通过执行以下操作来获取此信息:
FormsAuthentication.SetAuthCookie(model.UserName, false);
Run Code Online (Sandbox Code Playgroud)
是否可以设置HttpContext.Current.User.Identity.IsAuthenticated为true?
你不必要地对抗系统.
AuthenticationManager.SignIn 获取一个可用于当前请求的剩余部分的标识参数,该参数应该非常短.
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
Debug.WriteLine(identity.IsAuthenticated); //true
Debug.WriteLine(this.Request.IsAuthenticated); //false
Run Code Online (Sandbox Code Playgroud)
手头的请求的目的是简单地验证用户.如果有的话,你不应该做更多的事情,然后返回响应/进行重定向.
其原因this.Request.IsAuthenticated==false,即使你只是(成功)认证的用户是因为这个值是由设置FormsAuthenticationModule在初始阶段(AuthenticateRequest)请求管道.
该FormsAuthenticationModule会寻找AUTH-的cookie和验证(IsAuthenticated=true根据发现的情况的信息).
这一切都在您点击控制器中的操作之前发生,因此如果请求未经过身份验证,则可能会被短路.
因此,只需在登录操作中对用户进行身份验证就不会更改此值,因为为时已晚.从请求管道的角度来看,所有这些操作都是附加/重新验证auth-cookie,auth-cookie将在下一个请求期间由auth模块使用.
这也是为什么我们通常会立即重定向以使auth模块在下一个请求中更新值.
| 归档时间: |
|
| 查看次数: |
2675 次 |
| 最近记录: |