2010-11-26 9 views
3

Ich entwerfe eine App in ASP.NET MVC, und die übliche Art, Aktionen zu schützen, ist durch das Attribut Authorize, die eine gesamte Aktion schützt.Dynamische Sicherheit für ASP.NET MVC

[Authorize(Roles = "Managers")] 
public AtionResult Info(int employeeId) 

In unserem Design ist die Anwendung jedoch stark datengesteuert. Eine Aktion für einen Datensatz ist möglicherweise zulässig und für einen anderen Datensatz nicht zulässig.

 
//OK 
http://host/Employee/Info/102 

//Not OK 
http://host/Employee/Info/105 

Welches Muster sollten wir für die Sicherheit für dieses Design verwenden?

Antwort

0

Sie könnten Ihre Aktionsmethoden mit einem benutzerdefinierten Attribut aus der ActionFilterAttribute-Klasse dekorieren, und in der OnActionExecuting-Methode die Daten in der eingehenden Anfrage überprüfen und falls etwas nicht erlaubt ist, eine Sicherheitsausnahme/redirect/tun, was Sie benötigen .

4

Sie können ein abgeleitetes Autorize-Attribut erstellen, um das zu tun, was Sie wollen.

public class DynamicSecurity : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //go to db 
     return true; 
    } 
}