Asp.net mvc 自定义属性+;自定义SiteMapProvider相关吗?
对于控制器类,我有一个自定义的Asp.net mvc 自定义属性+;自定义SiteMapProvider相关吗?,asp.net-mvc,vb.net,authorization,sitemap,authorize-attribute,Asp.net Mvc,Vb.net,Authorization,Sitemap,Authorize Attribute,对于控制器类,我有一个自定义的SiteMapProvider(从数据库填充)和一个自定义的AuthorizeAttribute(根据角色页面数据库验证当前用户角色+请求页面) 我必须实现函数SiteMapProvider.IsAccessibleToUser(上下文,节点)。我还必须实现AuthorizeAttribute.AuthorizeCore(上下文) 这两个功能是如何关联的?是否有某种方法可以“属性化”SiteMapProvider? 一些代码: 编辑:这可能是一个解决方案(在Aut
SiteMapProvider
(从数据库填充)和一个自定义的AuthorizeAttribute
(根据角色页面数据库验证当前用户角色+请求页面)
我必须实现函数SiteMapProvider.IsAccessibleToUser(上下文,节点)
。我还必须实现AuthorizeAttribute.AuthorizeCore(上下文)
这两个功能是如何关联的?是否有某种方法可以“属性化”SiteMapProvider?
一些代码:
编辑:这可能是一个解决方案(在
AuthorizeCore()
内部)?context
不过是HttpContextBase
,而IsAccessibleToUser()
仅将HttpContext
作为参数
当前代码:
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两次 我当前使用默认sitemapprovider两次
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