以前のASP.NET MVCでは、ユーザーが認証されなかった場合にログインアクションにリダイレクトするオプションがありました。
ASP.NET Coreでも同じことが必要なので、私は:
[Authorize]
何らかの任意のアクションリダイレクトを構成していないため、リダイレクトは期待していません。しかし、それは自動的にログインアクションにリダイレクトします!
このオプションはどこ/どのように設定されますか?
CookieAuthenticationOptions
クラスを使用してパスを構成できます。
このようなもの。
app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Login/"),
AuthenticationType = "My-Magical-Authentication",
// etc...
},
});
現在のaspnetコアバージョン(2.1.0)では、これが変更されており、現在は拡張機能を使用できます。
services.ConfigureApplicationCookie(options => options.LoginPath = "/login");
または
services
.AddAuthentication()
.AddCookie(options =>
{
options.LoginPath = "/login";
options.LogoutPath = "/logout";
});
2.0への移行の詳細については、こちらをご覧ください この記事 。
興味のある方は、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年4月にこれを試みましたが、"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0"
はリダイレクトされません。1.0.1
バージョンを使用する必要がありました
私のアプリではリダイレクトがまったく機能せず、ここで解決する方法はありませんでしたが、Status Code Pages
した:
app.UseStatusCodePages(async context =>
{
var response = context.HttpContext.Response;
if (response.StatusCode == (int)HttpStatusCode.Unauthorized ||
response.StatusCode == (int)HttpStatusCode.Forbidden)
response.Redirect("/Authentication");
});