2017-04-25 6 views
0

Nancy.Authentication.Stateless 1.4.1を使用しており、ユーザーが承認されていない場合にログインページにリダイレクトする推奨方法を知る必要があります。StatelessAuthenticationConfigurationを使用している場合、失敗した認証のログインページへのリダイレクト

現在、認証はクライアントに401を返すという点で機能します。私は401(サーバー側)を傍受し、代わりにユーザーをログインページに送りたいと思っています。

私は(https://github.com/NancyFx/Nancy/wiki/Forms-authentication)ここで述べたように、これはフォーム認証で可能であることがわかります

(フォーム認証用)スニペット

var formsAuthConfiguration = 
new FormsAuthenticationConfiguration() 
{ 
    RedirectUrl = "~/login", 
    UserMapper = container.Resolve<IUserMapper>(), 
}; 

使用しているときにこれを行う方法に困惑するだけビットStatelessAuthenticationConfiguration

答えて

1

これは、Afterパイプライン(The Application Before After and OnError pipelinesを参照)またはモジュールのAfter hook(012を参照)のカスタムハンドラで手動で実装できます)は、レスポンスを許可されていないリダイレクト応答で置き換えます。 RedirectUnauthorizedRequests方法は、このようなものになります

pipelines.AfterRequest.AddItemToEndOfPipeline(RedirectUnauthorizedRequests); 

アプリケーションレベルでそれを有効にするには、このようなものを使用することができます

private static Action<NancyContext> RedirectUnauthorizedRequests() 
{ 
    return context => 
    { 
     if (context.Response.StatusCode == HttpStatusCode.Unauthorized) 
     { 
      context.Response = context.GetRedirect("/login"); 
     } 
    }; 
} 
関連する問題