ASP.NET MVC認証が機能していないと、「私を忘れないでください」
-
21-08-2019 - |
質問
私は、プロジェクトテンプレートに含まれている標準のASP.NETメンバーシッププロバイダーとアカウントコントローラと、標準のASP.NET MVC(RC更新)Webプロジェクトを持っています。
私は私のログインフォームで「私を忘れないでください」チェックすると、私はまだサイトが記憶されておりません。 (Firefoxは私のユーザー名とパスワードを覚えているが、何私が起こることを期待すると、自動的にログオンされることになっていた)。
私は手動でクッキーを設定し、チェックする必要がありますか?もしそうなら、どのようにそれが最善行われるべき?
解決
あなたはSetAuthCookieメソッドに真/偽渡す必要があります。
public ActionResult Login (string email, string password, bool rememberMe, string returnUrl)
{
// snip
FormsAuth.SetAuthCookie(username, rememberMe); // <- true/false
// snip
}
とbool rememberMe
は、ログインページ上のチェックボックスの状態を反映していることを確認します。
他のヒント
あなたは私を覚えているボックスがチェックされたときにログオンを処理するコントローラメソッドで永続的なCookieを生成する必要があります。あなたがRedirectFromLoginPage
を使用している場合は、true
するcreatePersistentCookie引数を設定します。
これらの3つの方法は、私はクッキーを持続助けます。
ユーザが「私を忘れないでください」選択解除場合は、注、あなたはクッキーを削除することをお勧めします。
private const string RememberMeCookieName = "MyCookieName";
private string CheckForCookieUserName()
{
string returnValue = string.Empty;
HttpCookie rememberMeUserNameCookie = Request.Cookies.Get(RememberMeCookieName);
if (null != rememberMeUserNameCookie)
{
/* Note, the browser only sends the name/value to the webserver, and not the expiration date */
returnValue = rememberMeUserNameCookie.Value;
}
return returnValue;
}
private void CreateRememberMeCookie(string userName)
{
HttpCookie rememberMeCookie = new HttpCookie(RememberMeCookieName, userName);
rememberMeCookie.Expires = DateTime.MaxValue;
Response.SetCookie(rememberMeCookie);
}
private void RemoveRememberMeCookie()
{
/* k1ll the cookie ! */
HttpCookie rememberMeUserNameCookie = Request.Cookies[RememberMeCookieName];
if (null != rememberMeUserNameCookie)
{
Response.Cookies.Remove(RememberMeCookieName);
rememberMeUserNameCookie.Expires = DateTime.Now.AddYears(-1);
rememberMeUserNameCookie.Value = null;
Response.SetCookie(rememberMeUserNameCookie);
}
}
所属していません StackOverflow