フォーム認証が有効になっている 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 と関係があると確信しています。