0

私は 2 つのコントローラーを持っています。

  • AccountController : Controller //For accounts <-- MVC
  • ItemController : ApiController //For Items <-- WEB API

アカウント コントローラーは、すべての意図と目的において、アカウント コードのかなり標準的な実装です。唯一の大きな違いは、カスタム メンバーシップ プロバイダーを使用していることです。アカウント コントローラーには、もう 1 つのアクションもあります。

[Authorize]
public ActionResult Bleh(){ return View(); }

私が到達しようとした場合:

http://localhost/Account/Bleh

(予想どおり) ログイン ページにリダイレクトされ、ログイン後に Bleh ページに戻ります。すべて良い。問題は ItemController にあります。Authorize 属性を持つアクションもあります。

[Authorize]
public HttpResponseMessage PostItem(Item item) { /**/ }

ログインする前にこれにアクセスすると、401 - Unauthorized が返されますが、これも予想どおりですが、ログイン後も 401 が返されます。

構成要素が不足していますか? ルーティング?ね その他?

Web Api が MVC と同じ方法でフォーム認証を取得するという印象を受けました。MVC が機能しているため、認証が機能していることはわかってます。

4

3 に答える 3

0

APIコントローラーをホストしているweb.configで、認証スキームを定義していることを確認してください。

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2400" />
</authentication>

または、ユーザーを別の方法で追跡している他の種類のカスタム認証スキームを使用している場合は、DelegatingHandlerを作成する必要があります。これが私が基本認証のために書いた例です:https ://stackoverflow.com/a/11536349/29407

于 2012-08-20T19:06:57.010 に答える
0

アプリケーションをゼロから再構築したところ、フォーム コードが期待どおりに機能するようになりました。元のコードと新しいコードの違いは一生わかりません。おそらくどこかの構成ファイルに何かがあるのではないかと思いますが、かなりの時間が経過すると、それがわかりません。

于 2012-09-24T10:31:12.793 に答える