Visual Studio 2015で(MVCを使用して)新しいWeb APIプロジェクトを作成しましたが、テスト目的でそのプロジェクトを実行しましたが、エラーが発生しました。
プロジェクトを実行すると、ホームページが正しく表示されますが、/ api/valuesまたは/ api/values/5に移動すると、以下のxmlメッセージが表示されます。
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
誰か助けてくれますか? Web APIは初めてです。 Authorize属性を削除したくないことに注意してください。承認後にのみリソースにアクセスしたい。だから私は間違っているものを探しています。
ValuesControllerには、属性Authorize
があります。これを削除すると、ホームページとして機能します。
Authorize
属性は、匿名ユーザーがValuesController
にアクセスできないようにするだけです。
この属性を使用するには、まずユーザーを登録し、次にログインしてユーザーのトークンを取得する必要があります。次に、トークンを使用して自己を認証し、アクセス権を取得できます。
このページでは Individual-accounts-in-web-api に必要なものがすべて説明されています
ValuesController
に Authorize 属性があるために発生します
[Authorize]
public class ValuesController : ApiController
[Authorize]
を削除してもう一度お試しください
編集
編集内容に応じて、新しいユーザーを作成してログインするか、@ Marcus Hが述べた[AllowAnonymous]
を使用する必要があります。IDの詳細
ここで答えを得ました。
https://stackoverflow.com/a/29405794/8107314
そして、私のエラーを修正するのは非常に便利でした
私はちょうど同じ問題に出会い、解決策を見つけました:
WebAPIを登録する前に、OAuthトークンジェネレーターとOAuthトークンコンシューマーを登録する必要があります。
これをパイプラインと考えると、一種の理にかなっています。パイプラインでは、コントローラーによる要求処理の前に認証/承認が行われる必要があります。
TL; DR:変更
appBuilder.UseWebApi(config);
this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);
に
this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);
appBuilder.UseWebApi(config);
Cguedelトップ43%のシニアソフトウェアエンジニア全体
すべての.NETに関心のあるソフトウェア開発者、特にWPF SOreadytohelp