0

データベースと通信する唯一の方法として遠隔 Web サービスを使用する ASP.NET MVC 3 で Web ポータルを構築しています。Web サービスには、要求ヘッダーで常にユーザー名/パスワードを渡す必要があります。そうしないと、呼び出しが拒否されます。

ValidateUser メソッドがユーザー名/パスワードを Web サービスの Login メソッドに送信し、認証が成功した場合は true/false を返すように、ASP.NET メンバーシップをオーバーライドしました。MVC 3 の空のインターネット テンプレートで提供される AcountController を使用すると、非常にうまく機能します。すべての Web サービス呼び出しでユーザー名/パスワードを渡す必要があるため、それらをセッションに保存しています。

私の問題は次のとおりです。

ブラウザーを閉じて再度開くと... Web サイトにログインしたままになりますが、セッション変数の有効期限が切れているため、資格情報を使用してログを記録しているにもかかわらず、Web サービスへの要求が受け入れられません。

ユーザーのログイン状態をセッション状態と同期する方法についての良い提案を探しています。ログオフが使用されるまで両方を永続的に保持するか、ブラウザーを閉じて両方を破棄するかのいずれかです。

すべての提案をありがとう:)

4

2 に答える 2

1

ユーザーが AccountController を使用してサインインするときは、次のように認証 Cookie を設定してみてください。

FormsAuthentication.SetAuthCookie(model.UserName, false);

これにより、ブラウザ ウィンドウが閉じられたときに Cookie を削除するように ASP.NET に指示する必要があります。次に、ユーザーが新しいブラウザーを開くと、セッションと認証 Cookie の両方が破棄されます。

于 2012-05-31T20:06:09.347 に答える
0

セッションは、クライアント側の Cookie です。フォーム認証 (メンバーシップ プロバイダーを使用) も Cookie を使用します。

それらは違う。

認証チケットまたは Cookie は永続的ですか? この MS KBでは、ここで説明するよりも詳細に物事とシナリオについて説明します...

H番目。

于 2012-05-31T18:17:55.757 に答える