「Remember Me」オプションをサポートするログイン コントロールがあります。
マークアップ
<asp:Login ID="UsersLogin" runat="server" OnAuthenticate="UsersLogin_Authenticate" DisplayRememberMe="true"
CssClass="usersLogin" FailureText="The username or password you supplied is incorrect"
Width="100%">
</asp:Login>
コードビハインド:
protected void UsersLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
Page.Validate(); // Executes the validation controls against the input controls.
if (!Page.IsValid) return; // Return from the function, incase validation fails.
e.Authenticated = Membership.ValidateUser(UsersLogin.UserName, UsersLogin.Password);
FormsAuthentication.RedirectFromLoginPage(UsersLogin.UserName, UsersLogin.RememberMeSet);
}
実行された手順と私の観察 (間違っている可能性があります):
1)。ユーザーは資格情報を入力し、[Remember Me] チェックボックスをオンにします。ASP.NET は、クライアント側で永続的な Cookie を作成します。
2)。次に、ASP.NET は、"returnUrl" クエリ文字列パラメーターで示される保護されたリソースにユーザーを移動します (利用可能な場合)。それ以外の場合は、web.config のタグの "DefaultUrl" プロパティで指定されたページにユーザーをリダイレクトします。
3)。ユーザーがブラウザを閉じます。
4)。ユーザーはブラウザを再度開き、同じ保護されたリソースへの URL を入力します。ASP.NET は、永続的な Cookie により、その保護されたリソースへのアクセスを許可します。
5)。ここで、ユーザーはログイン ページに移動します。ASP.NET は、ユーザー名とパスワードのテキスト ボックスを入力し、"
ステップ5は私が立ち往生しているところです。手順 5 を確実にするのが ASP.NET の責任かどうか
はわかりません。この問題が何度も尋ねられていることは承知していますが、多くは単なる回避策であったため、合理的な解決策は見つかりませんでした。独自の FormsAuthenticationTicket を作成し、UserData を追加して、me の記憶状態を保存することを提案するソリューションがいくつかありました。web.config にタグを明示的に書き留め、タイムアウト、パスなどを含むすべてのパラメーターを明示的に指定することをお勧めします。
また、次のステートメントについても訂正してください。「「LoginStatus」コントロールをクリックするか、通常のリンク ボタンを使用して通常のリンク ボタンをクリックして書き込むことにより、アプリケーションからログアウトすると、ASP.NET は永続的な Cookie を削除します
"FormsAuthentication.Log();
FormsAuthentication.RedirectToLoginPage()"
。
ログイン コントロールで [Remember Me] チェックボックスをオンにするには、何をする必要があるか、アドバイスをお願いします。前もって感謝します。