2011-10-21 12 views
1

モジュールがクレームを要求し、ユーザーがクレームを持っていない場合、403応答が返されます。 例:ナンシーRequiresClaims失敗は403を返します。これはどのように使用しますか?

this.RequiresClaims(new[] { "SuperSecure" }); 

または

this.RequiresValidatedClaims(c => c.Contains("SuperSecure")); 

が、それだけでユーザーに空白のページを返します。

要求されたクレームを持たないユーザーはどうすれば対処できますか? 403を捕まえてリダイレクトできますか?

RequiresClaimsメソッドは、voidを返します。または、pre-requestフックを使用して、HttpStatusCode.Forbiddenをスローします。ユーザーは何が起こったのか知っていますか?

多くのおかげで、 ニール

答えて

1

独自のPOSTリクエストフック(アプリレベル、またはモジュールレベルでのいずれか)、または、おそらくdefault oneを包む、IErrorHandler自分自身を実装することを書き込むことによってどちらかそれをキャッチすることができます。

エラーハンドラの内容が変更されるため、複数のエラーコードを登録することができます(「can/do」インターフェイスを使用して)できますが、何らかの理由で私の脳didnコレクションとして追加しないでください:-)

+0

素晴らしいです。多くのありがとうスティーブ。 –

+1

誰かが私のように将来ここに来る場合、IErrorHandlerの名前が[IStatusCodeHandler](https://github.com/grumpydev/Nancy/blob/master/src/Nancy/IStatusCodeHandler.cs)に変更されたことに注意してください。新しいデフォルトのものは[DefaultStatusCodeHandler](https://github.com/grumpydev/Nancy/blob/master/src/Nancy/ErrorHandling/DefaultStatusCodeHandler.cs)です。 – Rassi

関連する問題