Есть ли способ определить политику доступа в одном месте в ASP. NET Ядро, которое похоже на antmatcher Spring Security - PullRequest
0 голосов
/ 17 апреля 2020

В Spring Security вы можете определить, на каких конечных точках вы хотите авторизацию в одном месте, например

http.authorizeRequests()
  .antMatchers("/login").permitAll()
  .antMatchers("/admin/**").access("hasRole('ADMIN')")
  .antMatchers("/**").denyAll();

In. NET Я могу создать политику запрета по умолчанию, добавив AuthorizationPolicy с RequireAuthenticatedUser:

      services.AddControllersWithViews(o =>
      {
        var policy = new AuthorizationPolicyBuilder()
          .RequireAuthenticatedUser()
          .Build();
        o.Filters.Add(new AuthorizeFilter(policy));
        o.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().AddRequirements(new endpoint))
      });

Есть ли способ определить, какие пути я хочу и не авторизовать аналогично. NET как в Spring Security, т.е. определить все это в одном месте?

1 Ответ

0 голосов
/ 19 апреля 2020

Если вам необходимо отключить авторизацию для указанного c URL-адреса, например страницы входа, вы можете добавить атрибут [AllowAnonymous] в соответствующее действие.

[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

Посмотрите на это справка .

...