У меня есть следующий код, который работает нормально для аутентификации
// POST api/Account/AddExternalLogin
[Route("AddExternalLogin")]
public async Task<IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
AuthenticationTicket ticket = AccessTokenFormat.Unprotect(model.ExternalAccessToken);
if (ticket == null || ticket.Identity == null || (ticket.Properties != null
&& ticket.Properties.ExpiresUtc.HasValue
&& ticket.Properties.ExpiresUtc.Value < DateTimeOffset.UtcNow))
{
return BadRequest("External login failure.");
}
ExternalLoginData externalData = ExternalLoginData.FromIdentity(ticket.Identity);
if (externalData == null)
{
return BadRequest("The external login is already associated with an account.");
}
IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(),
new UserLoginInfo(externalData.LoginProvider, externalData.ProviderKey));
await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
Я добавил одну строку в приведенном выше коде, чтобы добавить роль «Admin123» в контекст, как показано ниже.
await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
Но я не могу проверить с помощью авторизации (role = "Admin123")
Что я не так делаю?