MVC 5 с идентификатором ASP.NET - получить претензии, когда пользователь входит в систему

Я использую OWIN 2.0, и после входа в систему я хочу получить существующую заявку из базы данных, но если я попытаюсь получить претензии пользователя, они пусты. Если я поместил один и тот же код в любой из последующих контроллеров, которые будут вызваны, то претензии там. Кажется, что претензии не доступны до следующего запроса после первоначального входа. Почему это?

var claimsIdentity = User.Identity as ClaimsIdentity;
var testClaim = claimsIdentity.Claims.Where(r => r.Type == "TestClaim").FirstOrDefault();
1 ответ

Возможно, потому, что вы не передали претензии в первоначальный логин (или пропустили вызов CreateIdentityAsync)?

С помощью готового приложения MVC5 я делаю это в методе SignInAsync:

private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
 AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
 var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
 //Get the given name from somewhere
 var givenName = GetGivenName();
 identity.AddClaim(new Claim(ClaimTypes.GivenName, givenName));
 AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}

И это вызывается из действия Login.

licensed under cc by-sa 3.0 with attribution.