1

Windows 認証とカスタム ロール プロバイダーを使用して、内部 (イントラネット) MVC3 アプリケーションを構築しています。ユーザーが要求された役割を持っている限り、認証と役割プロバイダーは正常に機能します。

たとえばUserContoller、アプリケーションのユーザーがアプリケーション内のユーザー アカウントを管理できるようにする があります。明らかに、このコントローラーへのアクセスを制限したいと思います。

私がこれを行う場合:

[Authorize]
public class UserController : Controller
{
    ...
}

その後、Windows 認証は正常に機能し、ユーザーは透過的にログインします。ただし、コントローラーを特定のユーザー グループに制限したいと考えています。だから私はこれを行います:

[Authorize(Roles="UserAdmin")]
public class UserController : Controller
{
    ...
}

ロール プロバイダーから返されたロールのリストに「UserAdmin」が含まれている場合、すべて問題なく、ユーザーはコントローラーにアクセスできます。

ただし、ユーザーがロールに含まれていない場合、ブラウザー (IE8 および FF10 でテスト済み) は資格情報の入力を求めます。それがキャンセルされた場合、サーバーは 401 エラー ページを返します。

結局のところ、私の質問は、ユーザーが要求された役割にない状況をどのように処理し、ユーザーをアプリケーションのホーム アクションまたはユーザー フレンドリーなメッセージを提供する他のアクションに戻すかということです。

4

2 に答える 2

4

から継承するカスタム属性を作成することもできますAuthorizeAttribute

HandleUnauthorizedRequestメソッドをオーバーライドする

于 2012-05-03T08:59:46.063 に答える
0

401 ケースで表示する URL を web.config で指定できます。

<customErrors mode="RemoteOnly" defaultRedirect="/Error/">
   <error statusCode="401" redirect="/AuthorizationFailed"/>
</customErrors>
于 2012-05-03T05:25:36.153 に答える