Jak mohu zvládnout zabezpečení aplikací? použitím ActionFilterAttribute a / nebo povolení SiteMap ..?

hlasů
1

Vytvořil jsem následující ActionFilterAttributezkontrolovat, zda je uživatel povolen přístup na stránku. Také jsem vytvořil dvě vlastní Exceptionszvládnout různé scénáře: NotLoggedInExceptiona InsufficientPrivilegeException.

ActionFilterAttribute

Public Class ValidateAuthentication : Inherits ActionFilterAttribute
    Private _page As BLL.Page

    Public Sub New(ByVal Page As BLL.Page)
        Me._page = Page
    End Sub
    Public Overrides Sub OnActionExecuting(ByVal filterContext As System.Web.Mvc.ActionExecutingContext)
        Select Case Me._page.IsAccessibleToUser(filterContext.HttpContext.User)
            Case -1
                Throw New NotLoggedInException()
            Case 0
                Throw New InsufficientPrivilegeException()
            Case 1
                //access granted
        End Select
    End Sub
End Class

Mám také vlastní SiteMapProvider kde jsem implementoval svou vlastní funkci IsAccessibleToUser (). Tak i já mít securityTrimming.

SiteMapProvider

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)


    Select case p.IsAccessibleToUser(context.User)
        Case 1
            Return true
        Case else
            Return false
    End Select
End Function

Otázky:

  1. Kde mohu chytit výjimky pro Například přesměrovat uživatele, pokud není povoleno?
  2. Měl bych snad pouze povolení SiteMap někde jinde namísto použití ActionFilterAttribute a házet výjimky ..?

Poznámka: jak vidíte, já jsem s použitím vlastní třídu pro BLL.Page. Jedná se o ORM strana, která má na základě role zabezpečení uložených v databázi. Mapa stránek je také obydlený na základě získaných údajů

Položena 12/01/2010 v 17:51
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Nenechte objevit AuthoriazeAttribute. Vaše verze nebude zpracovávat mezipaměti akcí; postaven v AuthorizeAttributevůle. Pokud potřebujete upravit ověřování, pak přizpůsobit zprostředkovatele členství nebo podtypAuthorizeAttribute , spíše než objevování bezpečnost MVC.

Odpovězeno 12/01/2010 v 18:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more