3

フォーム認証が有効になっている Web サイトでホストされる Web アプリケーションを作成しています。認証データベース「管理者」に役割があります。これが私のコントローラーコードです:

[RequireHttps]
[Authorize(Roles = "Admins")]
public ActionResult Index()
{
  return this.View();
}

インデックス ページに移動すると、認証されていない場合、資格情報を入力するログイン ページにリダイレクトされます。その後、ログイン ページは新しいアプリのインデックス ページにリダイレクトされますが、コントローラーはユーザーが認証されていることを認識しません。

属性をAuthorize削除して、Chrome 開発者コンソールで送信されたリクエストを調べ、Cookie が実際に送信されていることを確認しました。しかし、Authorize属性をそのままにして Index ページに移動すると、コントローラー内のリクエストの Cookie コレクションが空になります。ヘッダー コレクションには、"Cookie" というタイトルのヘッダーが含まれており、ヘッダーの値には .ASPXAUTH Cookie が含まれています。

ログイン ページは、次のコードで login を呼び出します。

FormsAuthentication.SetAuthCookie(userName, remember, "/");

この動作は、すべての主要なブラウザーで再現可能です。

リクエストの Cookie コレクションに値を設定するにはどうすればよいですか?
ユーザーが本当に認証されていることをアプリケーションに認識させるにはどうすればよいですか?

編集:
まだ機能していませんが、フィルタリングされている ASPXAUTH Cookie と関係があると確信しています。

4

2 に答える 2