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