2016-12-22 14 views
0

cookieauthenticationを使用して.net-coreに実装されています。 私がログインしていないときにAuthorizationAttributeが設定されているときにページにアクセスすると、ログインページにリダイレクトする代わりに空白のページが表示されます。リダイレクト401が動作しないことを承認します。

Fiddlerは、401の不正な応答を受け取っていることを伝えます。場所ヘッダーを/ホームに設定されていますが、ブラウザによって無視され、ステータスコードが401

であるため、クッキーの実装は次のようになります。私はアクセスすることができますので、

  app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme, 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true, 
      LoginPath = new PathString("/Home"), 
      LogoutPath = new PathString("/logout"), 
      AccessDeniedPath = new PathString("/accessdenied") 
     }); 

AuthorizationAttributeは、正常に動作します私がログインしてすぐにページを開きます。

私の理解から、AutomaticChallenge = trueがこれを処理します。これは間違っていますか?

+0

これはかなり変です。あなたのパイプラインの変更に何か他のものがあるかもしれません302 httpステータスコードを401にリダイレクトします。 –

答えて

1

[自動チャレンジ]オプションで問題が発生しています。このオプションにより、IISIntegrationとCookieミドルウェアが競合します。詳細はhereを参照してください。

あなたは[承認]を使用している場合は、解決策は、私はそれをテストし、それが動作ConfigureServices(IServiceCollection services)

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

の内側にあなたのstartup.csに次のコードを追加することです!

+0

私はコードスニペットを追加しましたが、私にとってはうまくいきません。何が起こるかに違いはありません。私はKestrelを使用しています。 –

+1

[認証]でAuthenticationSchemeを指定する方法はありますか? [Authorize(ActiveAuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)] – Ross

+0

ビンゴ!指定:[Authorize]:[Authorize(ActiveAuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]がトリックを実行しました!どうもありがとうございます –

関連する問題