コントローラー クラスのカスタム(SiteMapProvider
データベースから入力) とカスタムAuthorizeAttribute
(現在のユーザー ロール + 要求されたページを Role_Page データベースに対して検証) があります。
関数を実装する必要がありますSiteMapProvider.IsAccessibleToUser(context, node)
。も実装する必要がありますAuthorizeAttribute.AuthorizeCore(context)
。
これらの 2 つの機能はどのように関連していますか? SiteMapProviderに「属性」を付ける方法はありませんか?
いくつかのコード:
編集: これは解決策かもしれません(内部AuthorizeCore()
)? context
ただしHttpContextBase
、 であり、パラメーターとしてIsAccessibleToUser()
のみ取りHttpContext
ます。
If Not SiteMap.Provider.IsAccessibleToUser(context, SiteMap.CurrentNode) Then
現在のコード:
Public Class CustomValidateAuthorization : Inherits AuthorizeAttribute
Public Sub New()
End Sub
Protected Overrides Function AuthorizeCore(ByVal httpContext As System.Web.HttpContextBase) As Boolean
If Not Global.Page.IsAccessibleToUser(httpContext.User) Then
//Exception or redirect (in exception)?
// or return false?
End If
Return True
End Function
End Class
Public Class CustomSiteMapProvider : Inherits StaticSiteMapProvider
Public Overrides Function IsAccessibleToUser(ByVal context As System.Web.HttpContext, ByVal node As System.Web.SiteMapNode) As Boolean
Dim p As New BLL.Page
p.LoadFromSiteMapNode(node)
Return p.IsAccessibleToUser(context.User)
End Function
End Class