14

これはMVC2Webサイトですが、FormsAuthenticationチケットに問題があります。30分後にユーザーがタイムアウトすると、再ログインできなくなります。テスト中に、DateTime.Now.AddMinutes(30)値が5000に設定され、すべてが正常でしたが、現在は30に変更されており、問題が発生しました。

クッキー作成から

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,
            user.UserID,
            DateTime.Now,
            DateTime.Now.AddMinutes(30),
            false,
            "user,user1",
            FormsAuthentication.FormsCookiePath);

Web.configファイル

<authentication mode="Forms">
  <forms loginUrl="~/Account.mvc/LogOn" timeout="2880" name=".ASPXFORMSAUTH" />
</authentication>

チケット作成の有効期限の値は>=web.config値である必要がありますか?

4

1 に答える 1

26

認証 Cookie を手動で作成しているため、web.config のタイムアウト値は完全に無視されます。したがって、同じ値を持つことをお勧めします。

var ticket = new FormsAuthenticationTicket(
    1,
    user.UserID,
    DateTime.Now,
    DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
    false,
    "user,user1",
    FormsAuthentication.FormsCookiePath
);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
{
    HttpOnly = true,
    Secure = FormsAuthentication.RequireSSL,
    Path = FormsAuthentication.FormsCookiePath,
    Domain = FormsAuthentication.CookieDomain
};
Response.AppendCookie(cookie);
于 2011-03-02T18:21:24.130 に答える