对于控制器类,我有一个自定义SiteMapProvider (从数据库中填充)和一个自定义AuthorizeAttribute (验证当前用户角色+针对Role_Page数据库请求的页面)。
我必须实现函数SiteMapProvider.IsAccessibleToUser(context, node)。我还必须实现AuthorizeAttribute.AuthorizeCore(context)。
这两个函数之间有什么关系?难道没有办法让'attribute‘SiteMapProvider?
一些代码:
编辑:可能是一个解决方案(在 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发布于 2010-02-04 13:52:46
我目前两次使用默认的站点地图提供程序。
https://stackoverflow.com/questions/2052826
复制相似问题