2016-09-06 6 views
1

Ich benutze MVC5 und wollte eine nette kleine Klasse wie in Fragen hier vorgeschlagen haben - ein Attribut, das ermöglicht, mehrere Rollen für die Rollenautorisierung zu übergeben. Definition sieht wie folgt aus:Benutzerdefinierte AuthorizeAttribute funktioniert nicht richtig

public class AuthorizeRolesAttribute : AuthorizeAttribute 
    { 
     public AuthorizeRolesAttribute(params string[] roles) 
     { 
      Roles = string.Join(",", roles); 
     } 
    } 

Die Verwendung ist (zum Beispiel) wie folgt aus:

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

Und es immer noch:

[AuthorizeRoles("Admin", "SuperAdmin")] 
    public ActionResult CompanyContacts() 
    { 
     return View(); 
    } 

Auch in web.config ich nächste Zeile hinzugefügt ermöglichen Sie Benutzern Zugriff auf die Methode. Es ignoriert sogar den Konstruktor überhaupt. Das Standardattribut funktioniert einwandfrei. Es scheint, als ob ich etwas verpasse. Irgendein Rat?

Danke!

+0

haben Sie Ihr Attribut in Attributen registriert? und haben Sie die Implementierung der onActionExecuting-Methode im Attribut bereitgestellt? –

+0

Nein. Der Grund ist - Ich möchte nur das Standardattribut eine Fähigkeit haben, mehrere Rollen nicht als eine einzelne Zeichenfolge, sondern als Parameter zu akzeptieren. Alles andere Verhalten von Autorisieren ist gut für mich. – Pritorian

Antwort

0

Ihr Code funktioniert einwandfrei. Wenn Sie die Benutzerrolle geändert haben, müssen Sie sich abmelden und erneut anmelden, da die alten Anmeldeinformationen bis zum Ende der Anmeldesitzung gültig bleiben.

+0

Nun, nein. Ich ändere nicht die Rolle im laufenden Betrieb. Melden Sie sich einfach als einfacher Benutzer an und versuchen Sie über die Adresse auf die "admin" -Methode zuzugreifen. Die Sache ist, dass Konstruktor überhaupt nicht aufgerufen wird. Mb das ist ein Teil des Grundes. – Pritorian

+0

Können Sie ein Beispielprojekt senden? weil es nicht möglich ist, die gleiche Situation hier zu regenerieren! – Ziyad

Verwandte Themen