7

Ich erstelle eine Intranet-Site mit ASP.NET 5, die die Windows-Authentifizierung verwendet. Ich habe die Authentifizierung funktioniert, aber ich möchte nicht alle in der Domäne Zugriff auf die Intranetsite haben. Ich kann keine Domänenrollen verwenden, daher habe ich eigene benutzerdefinierte Rollen in meinem SQL Server eingerichtet. Ich habe eine Tabelle, die den Domain-Benutzernamen Rollen zuordnet. Ich möchte den Zugriff auf die Intranetsite auf Benutzer beschränken, deren Rolle in meiner SQL Server-Rollentabelle definiert ist. Wie würde ich benutzerdefinierte Rollen für die Windows-Authentifizierung in ASP.NET 5 einrichten? Vielen Dank!ASP.NET 5 Benutzerdefinierte Rollen für die Windows-Authentifizierung

+0

haben Sie sich SqlRoleProvider angesehen? –

+0

Ich glaube nicht, dass SqlRoleProvider in ASP.NET 5 verfügbar ist. Zumindest konnte ich keinen Verweis darauf finden. – Jeremy

Antwort

8

Sie haben keine benutzerdefinierten Rollen eingerichtet. Sie müssen ein benutzerdefiniertes Autorisierungsattribut erstellen, wie beschrieben here.

UPDATE:

Ja, können Sie Ihr individuelles autorisieren Attribut global verwenden. Lassen Sie uns sagen, hier ist Ihre individuelle autorisieren Attribut:

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var username = httpContext.User.Identity.Name; 

     // Check to see if user has a role in the database 
     var isAuthorized = db.User.Find(username).Any(); 

     return isAuthorized; 
    } 
} 

Dann Sie es entweder auf der Ebene Aktion oder Controller-Ebene wie folgt verwendet werden:

[MyAuthorize] 
public ActionResult Index() 
{ 
} 

Oder, können Sie es als globaler Filter registrieren in Ihre FilterConfig-Klasse unter dem App_Start-Ordner, wie folgt:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new MyAuthorizeAttribute()); 
    } 
} 
+0

Kann ein benutzerdefiniertes Autorisierungsattribut automatisch bei jeder Anforderung ausgeführt werden? Ich dachte, das würde nur ein Attribut über bestimmten Controllern wie [MyCustomAttribute] hinzufügen, um Benutzer auf einem bestimmten Controller zu beschränken. – Jeremy

Verwandte Themen