0

Startup.cs:AuthorizeAttribute перенаправляет на доступ запрещен страницу, даже если вошли

 app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationScheme = "CustomAuthenticationCookieMiddleware", 
      LoginPath = new PathString("/user/login"), 
      LogoutPath = new PathString("/user/logout"), 
      AccessDeniedPath = new PathString("/access-denied"), 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true 
     }); 

MembershipController.cs

... 
await HttpContext.Authentication.SignInAsync("CustomAuthenticationCookieMiddleware", claimsPrincipal, new AuthenticationProperties { IsPersistent = loginUser.RememberMe }); 
... 

========

ПРОБЛЕМА:

[Authorize] Атрибут не работает. Он перенаправляется на страницу с запретом доступа.

НО [Authorize(Roles = "Administrator")] работает очень хорошо

Примечание: "User.Identity.IsAuthenticated" всегда ложно, даже если я успешно войти в

+0

Вы используете 'UseIdentity()' или другое промежуточное ПО для проверки подлинности до 'UseCookieAuthentication' в вашем методе' Configure'? –

+0

не просто использовать код выше –

+1

Используете ли вы механизм аутентификации по умолчанию ASP.NET или используете пользовательскую аутентификацию? У вас есть какой-либо пользовательский атрибут 'Authorize' в вашем проекте? –

ответ

0

Я цитирую:

Аналогично для Запретного ответа, пользователь перенаправляется к пути , указанному в AccessDeniedPath, когда мы добавили промежуточное ПО к нашему конвейеру . Мы не перенаправлять на путь входа в этом случае, как пользователя уже идентифицирован, они просто не имеют правильные требования или разрешения для просмотра запрашиваемого ресурса

Прочитайте эту прекрасную статью и решить ваша проблема: https://andrewlock.net/exploring-the-cookieauthenticationmiddleware-in-asp-net-core/

Смежные вопросы