L'autorisation a été refusée pour cette demande - nouveau projet D'API Web

je viens de créer un nouveau projet D'API Web (en utilisant MVC) dans visual studio 2015 et pour le but de tester, j'ai lancé ce projet mais j'ai fini en dessous de l'erreur.

après avoir lancé le projet, il ramène la Page d'accueil correctement mais quand j'ai navigué dans /api/values ou /api/values/5, Il me donne le message xml ci-dessous.

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

Quelqu'un peut-il aider? Je suis nouveau dans L'API Web. Veuillez noter que je ne veux pas supprimer l'Autoriser attribut. Je voudrais accéder à la ressource après autorisation seulement. Donc, je suis à la recherche de ce qui est mal.

22
demandé sur atp9 2016-08-16 00:36:04

3 réponses

dans le ValuesController il y a un attribut Authorize si vous l'enlever, il fonctionnera comme page d'accueil.

Authorize attribut juste empêcher un utilisateur anonyme d'accéder au ValuesController.

pour travailler avec cet attribut, vous devez d'abord enregistrer un utilisateur, et puis connectez-vous à obtenir de l'utilisateur du jeton, vous pouvez utiliser le jeton d'autoriser votre auto et d'en obtenir l'accès .

dans cette page Personne-comptes-en-web-api tout est expliqué de quoi avez-vous besoin d'

53
répondu Tarek Abo ELkheir 2016-08-15 22:43:23

Il arrive parce que vous avez un Autoriser l'attribut sur votre ValuesController

[Authorize]
public class ValuesController : ApiController

il suffit de supprimer [Authorize] et essayer à nouveau

EDIT

selon votre édition: vous devez créer un nouvel utilisateur et vous connecter ou utiliser [AllowAnonymous] as mentioned by @Marcus H. plus d'informations sur L'identité

14
répondu Roman Marusyk 2016-08-15 22:01:49

j'ai la réponse ici.

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

Et il a été très utile pour réparer mon erreur mon erreur

vous devez enregistrer le Générateur de Tokens OAuth et les objets de consommation de Tokens OAuth avant que WebAPI ne soit enregistré.

C'est un peu logique si vous pensez que c'est un pipeline, où L'Authentification / autorisation devrait venir avant le traitement des requêtes par les contrôleurs.

TL;DR: Changement

appBuilder.UseWebApi(config);

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

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

appBuilder.UseWebApi(config);

Par cguedel 43% du total Ingénieur Logiciel Principal

développeur de logiciels intéressé par toutes les choses. net, en particulier WPF SOreadytohelp

0
répondu K C Frank 2018-02-22 14:03:26