関連のカスタムAuthorizeAttribute +カスタムSiteMapProvider?
-
20-09-2019 - |
質問
私は、コントローラクラスの(Role_Pageデータベースに対して、現在のユーザーの役割が+要求されたページを検証します)(データベースから移入)カスタムSiteMapProvider
とカスタムAuthorizeAttribute
を持っています。
私は、関数SiteMapProvider.IsAccessibleToUser(context, node)
を実装する必要があります。私はまた、AuthorizeAttribute.AuthorizeCore(context)
を実装する必要があります。
をどのようにこれらの二つの機能が関係していますか?いくつかの方法がありませんに 'の属性' 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
解決
私は現在、二度、デフォルトのsitemapproviderを使用しています。
所属していません StackOverflow