it-swarm.com.de

Für diese Anfrage wurde die Berechtigung abgelehnt - Neues Web-API-Projekt

Ich habe gerade ein neues Web-API-Projekt (mithilfe von MVC) in Visual Studio 2015 erstellt. Zu Testzwecken habe ich dieses Projekt ausgeführt, es wurde jedoch ein Fehler angezeigt.

Nach dem Ausführen des Projekts wird die Startseite korrekt angezeigt. Wenn ich jedoch zu/api/values ​​oder/api/values ​​/ 5 navigiere, wird die folgende XML-Nachricht angezeigt.

<Error>
    <Message>Authorization has been denied for this request.</Message>
</Error>

Kann jemand bitte helfen? Ich bin neu in der Web-API .. Bitte beachten Sie, dass ich das Authorize-Attribut nicht entfernen möchte. Ich möchte nur nach Autorisierung auf die Ressource zugreifen. Also suche ich was falsch ist.

25
atp9

Im ValuesController gibt es ein Attribut Authorize, wenn Sie es entfernen, es funktioniert dann als Startseite.

Das Authorize-Attribut verhindert lediglich, dass anonyme Benutzer auf die ValuesController zugreifen.

um mit diesem Attribut arbeiten zu können, müssen Sie zunächst einen Benutzer registrieren und sich dann anmelden, um das Token des Benutzers zu erhalten. Anschließend können Sie das Token verwenden, um sich selbst zu autorisieren und Zugriff zu erhalten.

Auf dieser Seite Einzel-Accounts-in-Web-API wird alles erklärt, was Sie brauchen 

55

Dies geschieht, weil Sie ein Authorize -Attribut für Ihre ValuesController haben.

[Authorize]
public class ValuesController : ApiController

Entfernen Sie einfach [Authorize] und versuchen Sie es erneut

EDIT

Entsprechend Ihrer Bearbeitung: Sie sollten einen neuen Benutzer erstellen und sich anmelden oder [AllowAnonymous] verwenden, wie von @Marcus H. erwähnt. Lesen Sie mehr über Identity

15
Roman Marusyk

Ich habe die Antwort hier.

https://stackoverflow.com/a/29405794/8107314

Und es war sehr nützlich, meinen Fehler meinen Fehler zu beheben

Ich bin gerade auf das gleiche Problem gestoßen und habe die Lösung gefunden:

Sie müssen den OAuth Token Generator und den OAuth Token Consumer registrieren, bevor WebAPI registriert wird.

Es macht Sinn, wenn Sie sich dies als Pipeline vorstellen, bei der die Authentifizierung/Autorisierung vor der Bearbeitung von Anforderungen durch die Controller erfolgen sollte.

TL; DR: ändern

appBuilder.UseWebApi(config);

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

Zu

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

appBuilder.UseWebApi(config);

Von Cguedel insgesamt 43% Senior Software Engineer

Softwareentwickler, die sich für .NET interessieren, insbesondere für WPF SOreadytohelp

0
K C Frank