2016-10-24 54 views
5

在之前的ASP.NET MVC中,如果用戶未通過身份驗證,則會有一個重定向到登錄操作的選項。在ASP.NET Core中未經授權的情況下重定向到登錄

我需要ASP.NET核心同樣的事情,所以我:

  1. 從Visual Studio模板創建ASP.NET核心項目
  2. 添加[Authorize]一些任意的動作
  3. 打開我的瀏覽器中的相應視圖

我不希望重定向,因爲我沒有配置它。但是,它會自動重定向到登錄操作!

此選項設置在哪裏/如何設置?

+1

該框架能夠找到登錄操作,因爲它使用約定而不是配置。 – sudheeshix

+0

@sudheeshix如果沒有記錄在任何地方,那麼它是一種魔法。其實,即使它被記錄。現在有太多這樣的事情發生,特別是在ASP.NET中。 – grokky

回答

2

您可以使用CookieAuthenticationOptions類來配置路徑。

就是這樣。

app.UseCookieAuthentication(new CookieAuthenticationOptions { 
     LoginPath = new PathString("/Login/"), 
     AuthenticationType = "My-Magical-Authentication", 
     // etc... 
     }, 
}); 
+0

我看到[在本文中](https://docs.asp.net/en/latest/security/authentication/cookie.html),但是那樣說「使用Cookie中間件**而沒有** ASP.NET核心標識」。我正在使用身份。 – grokky

+1

此外,我不僅想控制這個設置,我想了解它在哪裏/如何發生。我不明白它是如何知道我的登錄視圖。這是我想了解的。 – grokky

+1

請查看此代碼 - https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs#L379 – Anuraj

2

對於任何有興趣的人,也可以使用AddIdentity服務提供者完成。

services.AddIdentity<User, IdentityRole>(options => 
    { 
     options.Cookies.ApplicationCookie.AutomaticAuthenticate = true; 
     options.Cookies.ApplicationCookie.AutomaticChallenge = true; 
     options.Cookies.ApplicationCookie.LoginPath = "/Auth/Login"; 
    }) 
    .AddEntityFrameworkStores<MehandiContext>() 
    .AddDefaultTokenProviders(); 

而且這裏解釋:https://stackoverflow.com/a/41643105/5784635

我嘗試這個四月2017年"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0"不重定向我只好用1.0.1版本

+0

適用於我在1.1.0版本(7月2017) – Wouter

+0

Anton/@Wouter,你們使用.NETCore嗎? –

+0

使用.net核心1.1 – Wouter

1

隨着當前ASPNET核心版本(2.1.0 ),這種情況已經改變,現在使用可使用的分機:

services.ConfigureApplicationCookie(options => options.LoginPath = "/login"); 

services 
     .AddAuthentication() 
     .AddCookie(options => 
     { 
      options.LoginPath = "/login"; 
      options.LogoutPath = "/logout"; 
     }); 

你可以看到更多關於遷移到2.0 in this article

相關問題