自AuthorizeAttribute +自定义SiteMapProvider有关?
-
20-09-2019 - |
题
我有一个自定义SiteMapProvider
(来自数据库填充)和一个自定义AuthorizeAttribute
(验证当前用户的角色+请求针对Role_Page数据库页)控制器类。
我必须实现功能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