Windows認証とカスタムロールプロバイダを使用して内部(イントラネット)MVC3アプリケーションを構築しています。ユーザーが役割を要求されている限り、認証と役割プロバイダーは正常に機能します。MVC3での認証失敗の処理方法
たとえば、アプリケーションのユーザーがアプリケーション内のユーザーアカウントを管理できるようにするUserContoller
があります。明らかに、私はこのコントローラへのアクセスを制限したい。
私はこれを行う場合:
[Authorize]
public class UserController : Controller
{
...
}
その後、Windows認証が正常に動作し、ユーザーが透過的にログインしている
しかし、私は、ユーザーの特定のグループにコントローラを制限したいです。だから私はこれを行う:私の役割プロバイダーによって返されたロールのリストは、「USERADMIN」が含まれている場合[Authorize(Roles="UserAdmin")]
public class UserController : Controller
{
...
}
を、その後、すべてが正常であると、ユーザは、コントローラへのアクセス権を取得します。
ただし、ユーザーがロールに属さない場合、ブラウザ(IE8とFF10でテスト済み)は資格情報の入力を求めます。これがキャンセルされた場合、サーバーは401エラーページを返します。
私の質問は、ユーザーが要求された役割にない状況をどのように処理して、アプリケーションのホームアクションやユーザーフレンドリーなメッセージを提供するための他のアクションに戻すかです。