質問

私は、コントローラクラスの(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を使用しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top