ASP.NET Identity Integration, wenn das Projekt ohne Authentifizierung erstellt wird

8

Ich habe ein Problem mit der Identität und ich bin nicht sehr vertraut damit. Vor nicht allzu langer Zeit habe ich ein neues Projekt gestartet, das ursprünglich keine Authentifizierung enthalten sollte. Als das Projekt jedoch wuchs, fanden wir heraus, dass wir es umsetzen sollten. Da es ursprünglich nicht so eingerichtet war, habe ich ein Formular für eine Anmeldung erstellt.

Ich habe die Antwort auf diese Frage gefunden und umgesetzt:

Implementieren der benutzerdefinierten Authentifizierung in ASP.NET MVC 5

Aber es funktioniert nicht und ich weiß nicht warum.

Hier ist mein Code:

Es gibt hier nicht viel zu sehen, es ist nur eine einfache Form.

%Vor%

Die Aktion, die dafür implementiert wird, ist diese, das ist viel wichtiger:

%Vor%

Und es gibt die isLoginValid-Funktion (vorerst ist sie so eingestellt, dass sie eine fest codierte Anmeldung verwendet)

%Vor%

Ich weiß nicht sehr viel von Ansprüchen oder wie Identität darunter funktioniert. Ich habe jedoch alle notwendigen Referenzen hinzugefügt. Wenn ich nach den Login-Weiterleitungen das authorize-Attribut für meine Aktionen verwende, erhalte ich eine nicht autorisierte Anfrage von IIS. Stimmt etwas mit meinem Code nicht?

Was muss ich ändern oder beheben, um den Autorisierungsteil von Identity verwenden zu können?

Danke,

    
Carlos Jimenez Bermudez 24.06.2016, 15:46
quelle

2 Antworten

6

Nach einiger Fehlersuche und dank des Kommentars von guysherman konnte ich die Lösung finden. Da ich die Lösung ohne Authentifizierung erstellt hatte, entfernte ich die Includes von Referenzen und den notwendigen OWIN-Konfigurationscode in meinem App_Start-Ordner.

Aus diesem Grund wurde nichts in Identity definiert und es gab nichts aus dem Autorisierungsteil, obwohl die Anmeldung einwandfrei funktionierte. Durch Erstellen eines neuen Projekts und Hinzufügen des gesamten erforderlichen Codes zum Konfigurieren der Identität konnte ich das Attribut "Autorisieren" ordnungsgemäß verwenden. ohne irgendwelche Probleme.

(Diese Antwort gilt für ASP.NET 4.6, ich nehme an, dass dies für ASP.NET Core anders gehandhabt wird)

UPDATE:

Um diese Antwort besser zu machen, dachte ich, ich sollte mehr darüber herausfinden, was ich getan habe, damit es funktioniert.

Beim Erstellen eines neuen Projekts mit Identität sehen Sie, dass es mehrere Dateien gibt, die nicht erstellt werden, wenn Sie sie nicht hinzufügen. Sie werden diese Dateien benötigen, die meisten davon werden in App_Start gespeichert.

Ich habe die Dateien, die ich nicht hatte, kopiert und die Namespaces so geändert, dass sie meinem aktuellen Projekt entsprechen. Nachdem ich das gemacht hatte, wurde mir klar, welche Pakete ich vermisse, also fügte ich diejenigen hinzu, die ich noch nicht hinzugefügt hatte.

Startup.Auth.cs wird die Definition für eine Schlüsselfunktion haben, damit die Identität funktioniert:

ConfigureAuth

Diese Funktion muss in der Startup-Klasse aufgerufen werden. in der Konfigurationsmethode.

Schließlich müssen Sie auch die Datei IdentityModel.cs einbeziehen, die normalerweise im Ordner Models erstellt wird. In meinem Fall platzierte ich alle Modelle in einem anderen Projekt, also platzierte ich die Klasse dort und fügte Verweise auf IdentityConfig.cs hinzu, so dass die Klasse erkennen würde, dass das IdentityModel existiert.

Und das war alles. In meinem Fall hatte ich viele Probleme mit der Identität, die versuchte, sich mit der db zu verbinden, um nach Benutzern zu suchen, da Identity keine Datenbank konfiguriert hatte, stürzte meine App aufgrund fehlgeschlagener db-Verbindungen ab. Das Entfernen der rot markierten Linien im dritten Bild hat es für mich funktioniert. Ich wollte die db-Verbindung der Identität nicht haben, da ich meine eigene Benutzerbehandlung habe, dies könnte nicht jemand anderes sein.

    
Carlos Jimenez Bermudez 24.06.2016, 16:55
quelle
1

Nach vielem Debuggen und dank @Carlos für die aufwendige Antwort. Wenn Ihr Projekt mit "Keine Authentifizierung" erstellt wurde, müssen Sie die fehlenden Nuget-Pakete hinzufügen, die die Authentifizierung erfordert.

Sie müssen folgendes installieren

%Vor%     
elfico 27.06.2016 13:08
quelle