Первый шаг - использовать cookie authentication
в Startup.cs
:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
. В методе Configure
используйте метод UseAuthentication
для вызова промежуточного программного обеспечения аутентификации, которое устанавливает свойство HttpContext.User.,Вызовите метод UseAuthentication перед вызовом UseMvcWithDefaultRoute
или UseMvc
:
app.UseAuthentication();
Затем в контроллере аутентификации после получения токена и декодирования для получения утверждений вы должны создать новый ClaimsIdentity
, добавить свои утвержденияи войдите в систему:
if (!User.Identity.IsAuthenticated)
{
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, YourName));
identity.AddClaim(new Claim(ClaimTypes.Name, YourName));
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
//Add your custom claims
var principal = new ClaimsPrincipal(identity);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true });
}
После этого вы можете использовать User.Identity.IsAuthenticated
, User.IsInRole("Admin")
и [Authorize(Roles="Admin")]
:
[Authorize(Roles = "Admin")]
public IActionResult About()
{
var result = User.IsInRole("Admin");
return View();
}