在之前的ASP.NET MVC中,如果用戶未通過身份驗證,則會有一個重定向到登錄操作的選項。在ASP.NET Core中未經授權的情況下重定向到登錄
我需要ASP.NET核心同樣的事情,所以我:
- 從Visual Studio模板創建ASP.NET核心項目
- 添加
[Authorize]
一些任意的動作 - 打開我的瀏覽器中的相應視圖
我不希望重定向,因爲我沒有配置它。但是,它會自動重定向到登錄操作!
此選項設置在哪裏/如何設置?
在之前的ASP.NET MVC中,如果用戶未通過身份驗證,則會有一個重定向到登錄操作的選項。在ASP.NET Core中未經授權的情況下重定向到登錄
我需要ASP.NET核心同樣的事情,所以我:
[Authorize]
一些任意的動作我不希望重定向,因爲我沒有配置它。但是,它會自動重定向到登錄操作!
此選項設置在哪裏/如何設置?
您可以使用CookieAuthenticationOptions
類來配置路徑。
就是這樣。
app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Login/"),
AuthenticationType = "My-Magical-Authentication",
// etc...
},
});
我看到[在本文中](https://docs.asp.net/en/latest/security/authentication/cookie.html),但是那樣說「使用Cookie中間件**而沒有** ASP.NET核心標識」。我正在使用身份。 – grokky
此外,我不僅想控制這個設置,我想了解它在哪裏/如何發生。我不明白它是如何知道我的登錄視圖。這是我想了解的。 – grokky
請查看此代碼 - https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs#L379 – Anuraj
對於任何有興趣的人,也可以使用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
版本
隨着當前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。
該框架能夠找到登錄操作,因爲它使用約定而不是配置。 – sudheeshix
@sudheeshix如果沒有記錄在任何地方,那麼它是一種魔法。其實,即使它被記錄。現在有太多這樣的事情發生,特別是在ASP.NET中。 – grokky