web-dev-qa-db-ja.com

ASP.NET Coreで不正な場合にログインにリダイレクトする

以前のASP.NET MVCでは、ユーザーが認証されなかった場合にログインアクションにリダイレクトするオプションがありました。

ASP.NET Coreでも同じことが必要なので、私は:

  1. visual StudioテンプレートからASP.NET Coreプロジェクトを作成しました
  2. 追加された[Authorize]何らかの任意のアクション
  3. ブラウザで対応するビューを開きました

リダイレクトを構成していないため、リダイレクトは期待していません。しかし、それは自動的にログインアクションにリダイレクトします!

このオプションはどこ/どのように設定されますか?

16
grokky

CookieAuthenticationOptionsクラスを使用してパスを構成できます。

このようなもの。

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

現在のaspnetコアバージョン(2.1.0)では、これが変更されており、現在は拡張機能を使用できます。

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

または

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

2.0への移行の詳細については、こちらをご覧ください この記事

11

興味のある方は、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バージョンを使用する必要がありました

4
Anton Toshik

私のアプリではリダイレクトがまったく機能せず、ここで解決する方法はありませんでしたが、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");
        });
1
Serj Sagan