2016-12-26 8 views
0

В startup.cs на меня Настройка:LoginPath не перенаправляет (asp.net ядро)

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationScheme = "Cookies", 
    LoginPath = new PathString("/Account/Login/"), 
    AccessDeniedPath = new PathString("/Account/Forbidden/"), 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true 
}); 

На обычном контроллере:

[Authorize] 
public class HomeController : Controller 
{ 
    public IActionResult Index() { return View(); } 
} 

На AccountController:

public class AccountController : Controller 
{ 
    [AllowAnonymous] 
    public IActionResult Login() { return View(); } 
} 

Доступ к Home/Index, не прошедший проверку подлинности, должен быть перенаправлен на логин, но возвращает пустую страницу. Я получаю 401 на скрипаче, но страницы не перенаправляются. Кажется, что ничего не случилось, но все равно не работает. Кто-нибудь знает, почему?

ответ

3

У вас возникла проблема с параметром AutomaticChallenge. Этот параметр вызывает конфликт между промежуточным программным обеспечением IISIntegration и Cookie, см. Подробные примечания here.

Если вы используете [Авторизоваться], то решение было бы добавить следующий код на startup.cs внутри ConfigureServices(IServiceCollection services)

services.AddAuthorization(options => 
{ 
    options.DefaultPolicy = new AuthorizationPolicyBuilder("Cookies").RequireAuthenticatedUser().Build(); 
}); 
+0

Спасибо, Росс! Полезные детали! – user6136000