Ich habe bereits ein MVC webApi-Projekt erstellt und möchte nun Authentifizierung und Autorisierung verwenden. Ich denke, dass ich diese Sicherheit bereits implementiert habe, aber aus irgendeinem Grund wird etwas schlecht, wenn ich meine Zugangsdaten schreibe und versuche, einige webApi-Methoden aufzurufen, wird die Meldung "Autorisierung wurde abgelehnt für diese Anfrage" angezeigt.
Dies ist der Code, den ich implementiert habe.
WebApiConfig:
%Vor%Routing-Konfiguration:
%Vor%Controller:
%Vor%HTML:
%Vor%JS:
%Vor%$ (Dokument) .ready (Funktion () { $ ('# btnLogIn'). click (logIn); });
Sie sollten das [AllowAnonymous]
-Attribut dem LogInPost
Wenn Sie Ihren Filtern den Wert AuthorizeAttribute
hinzugefügt haben, haben Ihre Controller davon ausgegangen, dass sie für alle Aktionen, einschließlich derjenigen, die für die Anmeldung verwendet wurde, standardmäßig eine Autorisierung benötigen.
Machst du Windows-Authentifizierung? erhalten Sie den Fehler "Zugriff verweigert"?
Manchmal führt IISEXpress und IIS einen Trick aus, und um das zu überwinden, habe ich die Site in der lokalen iis (inetmgr) gehostet, die Authentifizierung aktiviert (Fenster, falls zutreffend) und jetzt ausführen.
P.S. Nicht alle Maschinen haben standardmäßig einen IIS-Server installiert. Wenn inetmgr nicht funktioniert, müssen Sie es über die Systemsteuerung installieren - & gt; Windows-Funktionen - & gt; Wählen Sie alle Features von IIS und ASP .NET
ausHoffe, das wird helfen.
Entschuldigung für solch eine späte Antwort - Ich habe Ihre Frage gefunden, weil ich, nachdem ich von der von IIS gehosteten Web-API zu einer selbst gehosteten Web-API gewechselt bin, gerade das gleiche Problem festgestellt habe.
In meinem Fall wurde das Problem durch die Initialisierung von Thread.CurrentPrincipal verursacht. Etwas Hintergrund:
Zuvor habe ich diese ClaimsPrincipal-Instanz Thread.CurrentPrincipal zugewiesen, bevor die Nachricht an die verbleibenden Nachrichtenhandler in der Pipeline weitergeleitet wurde. Die Lösung für mich bestand jedoch darin, stattdessen das Prinzipalelement für die HttpRequestContext-Instanz zu verwenden, die zu der HttpRequestMessage-Instanz gehört, die an SendAsync übergeben wird. Daher (in F #),
%Vor%Ich hoffe, dass Ihnen das irgendwie helfen kann.
Tags und Links asp.net-web-api c# asp.net authentication authorization