2017-12-19 8 views
0

Ich arbeite an einer ASP.NET MVC-Website, die FluentSecurity verwendet, um Berechtigungen zu konfigurieren. Jetzt benötigen wir einen benutzerdefinierten ActionLink-Helper, der nur angezeigt wird, wenn der aktuelle Benutzer Zugriff auf die Zielaktion hat.Informationen dynamisch aus der FluentSecurity-Konfiguration extrahieren

Ich möchte wissen, ob es eine Möglichkeit gibt, von FluentSecurity Configuration dynamisch zu erfahren (z. B. mithilfe der SecurityConfiguration-Klasse), wenn der aktuell angemeldete Benutzer Zugriff auf eine Aktion mit ihrem Namen (Zeichenfolge) und ihrem Controller-Namen (Zeichenfolge) hat). Ich verbringe viel Zeit damit, in den Quellcode von FluentSecurity https://github.com/kristofferahl/FluentSecurity zu schauen, aber ohne Erfolg.

Zum Beispiel:

public bool HasAccess(string controllerName, string actionName) { 
     //code I'm looking for goes here 
} 

Antwort

0

Schließlich wird antworten ich mich kann dies eine andere helfen.

Ich emulieren nur die OnAuthorization-Methode der HandleSecurityAttribute-Klasse. Dieser Code funktioniert gut:

public static bool HasAccess(string fullControllerName, string actionName) 
    { 
     ISecurityContext contx = SecurityContext.Current; 
     contx.Data.RouteValues = new RouteValueDictionary(); 

     var handler = new SecurityHandler(); 

     try 
     { 
      var result = handler.HandleSecurityFor(fullControllerName, actionName, contx); 
      return (result == null); 
     } catch (PolicyViolationException) 
     { 
      return false; 
     } 

    } 
Verwandte Themen