2016-06-24 14 views
0

Ich habe ein MVC-Projekt ermöglicht es meinen Benutzern, Benutzer und Rollen zu den AspNetRoles und AspNetUsers Tabellen hinzuzufügen. Die Anwendung verwendet Active Directory zum Authentifizieren von Benutzern in der Anmeldesicht. In meiner Datenbank habe ich den Benutzer user123 zu der Rolle Administrators in meiner Datenbank hinzugefügt. Ich habe die folgende Logik hinzugefügt, um diesen Link für die Rolle Administrators in meiner Anmeldung teilweise sichtbar zu machen.Wie authentifiziere ich mich bei meinen ASPNET-Benutzern und -Rollen, die in meiner Datenbank gespeichert sind?

Ich habe dies auch zu meiner web.config in einem Versuch hinzugefügt, die Verbindung des Rollenanbieters mit der Datenbank zu instanziieren.

<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add connectionStringName="DefaultConnection" 
     name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     applicationName="MyApplicationName" /> 
    </providers> 
</roleManager> 

Allerdings ist meine Verbindung immer noch unsichtbar user123, die nach meiner Datenbank ein Mitglied von Administrators ist. Was ist die Ursache dafür?

Antwort

1

Sie mischen gleichzeitig Identität, ASP.NET-Mitgliedschaft und Windows Auth, die alle miteinander inkompatibel sind. Wenn Sie Identity verwenden, sind Rollenanbieter und solche aus dem Fenster. Das ist alles Teil der ASP.NET-Mitgliedschaft, die durch Identität ersetzt wird. Windows Auth ist ebenfalls ein völlig anderes Programm und arbeitet nicht mit individueller Authentifizierung, die von Identity oder ASP.NET-Mitgliedschaft bereitgestellt wird.

Wenn Sie Ihr eigenes Authentifizierungssystem verwenden möchten und Sie möchten über AD authentifizieren, dann können Sie Windows Auth nicht verwenden. Stattdessen müssen Sie sich manuell über LDAP mit Ihrem AD verbinden und Ihre Autorisierung dagegen ausführen. Sie benötigen weiterhin die tatsächlichen Benutzerdatensätze in Ihrem System, die von Identity zur Verfügung gestellt werden (da niemand mehr die ASP.NET-Mitgliedschaft verwenden sollte), aber Sie würden Identity nicht verwenden, um die Benutzer/Passwort-Kombination tatsächlich zu überprüfen. Stattdessen würden Sie dies über LDAP tun und dann den Benutzer einfach auf der Seite Identität anmelden.

+0

Chris, ich authentifiziere über LDAP. Ich melde mich über AD-Anmeldedaten bei meiner Anwendung an und kann sehen, ob der Benutzername und das Passwort gültig sind. Mein Login verwendet teilweise die Identität. Ich denke, mein Rollenanbieter ist falsch eingerichtet. Allerdings habe ich zum ersten Mal so etwas versucht und ich bin ziemlich neu in MVC. – Skullomania

+0

Ich kann garantieren, dass Ihr Rollenanbieter falsch eingerichtet ist, weil Identity keine Rollenanbieter verwendet. –

+0

ok ... Wenn ich die Zeichenfolge aus dem webconfig entferne, wie kann ich die App mithilfe der Rollen in der Datenbank authentifizieren? – Skullomania

Verwandte Themen