custom evalizeattribute + custom sitemapprovider ذات الصلة؟
-
20-09-2019 - |
سؤال
لدي مخصص SiteMapProvider
(مكتظة من قاعدة البيانات) وعرف AuthorizeAttribute
(التحقق من صحة أدوار المستخدمين الحاليين + الصفحة المطلوبة مقابل قاعدة بيانات rob_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