0

実装することにより、ASP.NET MVC アプリケーションの一部の機能にロール ベースの認証を使用しています。

<Authorize(Roles:="Administrator")> _
 Function AdminPage() As ActionResult
    Return View()
  End Function

ユーザーが管理者としてログインしていない場合、ユーザーはログイン ページにリダイレクトされますが、その理由はフィードバックされません。「この機能にアクセスするには、管理者である必要があります」のようなメッセージを表示したいと思います。

これを行うためのクリーンな方法を探しています。

少し早いですがお礼を。

4

1 に答える 1

3

これは、カスタムの authorize 属性を記述することで簡単に実現できます。

Public Class CustomAuthorizeAttribute
    Inherits AuthorizeAttribute
    Protected Overrides Sub HandleUnauthorizedRequest(filterContext As AuthorizationContext)
        MyBase.HandleUnauthorizedRequest(filterContext)
        filterContext.Controller.TempData("message") = String.Format("You need to be {0} to access this resource", Me.Roles)
    End Sub
End Class

次に、このカスタム属性でコントローラー アクションを装飾します。

<CustomAuthorize(Roles := "Administrator")> _
Public Function AdminPage() As ActionResult
    Return View()
End Function

そして、ログオンビューのどこかに:

<div><%: TempData("message") %></div>
于 2010-09-01T18:46:53.930 に答える