Я работаю над простым примером авторизации, используя утверждения, и авторизация не предоставляется.
Просто для ясности, я использую ASP.NET Core 2.2.4
Файл startup.cs настроен следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
...
services.AddIdentity<IdentityUser, IdentityRole>(option => { option.Password = new PasswordOptions { ... }; };
services.ConfigureApplicationCookie(option => { option.LoginPath = "/logins/Index"; });
services.AddAuthorization(option =>
{
option.AddPolicy("EditorOver18Policy", policy =>
{
policy.RequireClaim("Over18Claim");
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
app.UseMvc(routes =>
{ ... });
}
Во время входа в систему создаются утверждения:
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
if (!ModelState.IsValid)
{ ... }
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, false);
if (!result.Succeeded)
{ ... }
var claims = new List<Claim>();
claims.Add(new Claim("Over18Claim", "True"));
var claimIdentity = new ClaimsIdentity(claims);
User.AddIdentity(claimIdentity);
if (!string.IsNullOrEmpty(model.ReturnUrl))
return Redirect(model.ReturnUrl);
return RedirectToAction("Display", "Photos");
}
Контроллер, который должен быть защищен:
[Authorize (policy: "EditorOver18Policy")]
public IActionResult Upload()
{
...
}
Проще говоря, при запуске, убедитесь, что я только что вошел в систему и, таким образом, получил претензию, я получаю ошибку об отказе в доступе (извините, если она на португальском языке):
![enter image description here](https://i.stack.imgur.com/bdwJW.png)
Чего мне не хватает?