【发布时间】:2015-02-13 22:58:44
【问题描述】:
我正在使用我的应用程序设置 OWIN 身份验证,但我遇到了一个问题。我在我的登录页面上设置了验证和防伪令牌,当我进行 POST 时一切正常,但是在另一个页面上设置验证和防伪令牌时,我进行 POST 会导致出现以下错误:
防伪令牌提供程序是为用户“user@domain.com”设计的,但当前用户是“”...
那么如何在 Global.asax 中不使用 AntiForgeryConfig.SuppressIdentityHeuristicCheck 来解决此问题?
为什么防伪令牌不占用当前用户?
更新
Task<ClaimsIdentity> 是这样实现的:
public override Task<ClaimsIdentity> CreateIdentityAsync(AppUser user, string authenticationType)
{
return Task<ClaimsIdentity>.Factory.StartNew(() =>
{
var claimsList = new List<Claim>()
{
new Claim(ClaimTypes.Name, user.Email),
};
return new ClaimsIdentity(authenticationType);
});
}
而Task SignInAsync 是这样的:
public override async Task SignInAsync(AppUser user, bool isPersistent, bool rememberBrowser)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
identity.AddClaim(new Claim(ClaimTypes.Name, user.Email));
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}
user.Email 是 user@domain.com
【问题讨论】:
-
随请求发送了哪些 cookie?
标签: c# asp.net-mvc owin