1

私のアプリケーションでは、Asp.Netフォーム認証を使用しました。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    1,
                    adminResult.UserName,
                    DateTime.Now,
                    DateTime.Now.AddDays(2),
                    true,
                    "Administrator",
                    FormsAuthentication.FormsCookiePath
                    );
                string hash = FormsAuthentication.Encrypt(ticket);
                HttpCookie coockie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
                if (ticket.IsPersistent)
                {
                    coockie.Expires = ticket.Expiration;
                }
                Response.Cookies.Add(coockie);
                if (Url.IsLocalUrl(returnUrl))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Dashboard", "Cockpit");
                }

ただし、10〜15秒で自動的にログアウトされます。

解決策は何でしょうか?

ありがとう

4

1 に答える 1

0

ガベージコレクターがマシンキーをクリアしてアプリに再割り当てしたことが原因である可能性があります。マシンキーを生成し、web.configに配置します

<system.web>
    <machineKey validationKey="###YOUR KEY HERE ###"
                decryptionKey="## decrypt key here ##" 
                validation="SHA1" decryption="AES" />

MachineKeyはViewStateの暗号化と検証に使用されFormAuthentication、認証チケットに署名するためにこのキーを使用します。web.config指定しない場合は自動的に割り当てられますが、自分で指定した場合、コレクターはそれをクリアしません... ここに有益な記事がありますMachineKeyの重要性/動作をよりよく理解するのに役立つ場合があります

于 2012-11-08T09:18:51.213 に答える