質問

私は、プロジェクトテンプレートに含まれている標準の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);
            }
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top