以下に示すように、Asp.Net MVC アプリケーションでフォーム認証を使用しています。
コード
public void SignIn(string userName, bool isCookiePersistent)
{
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddDays(14),
createPersistentCookie, string.Empty);
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, isCookiePersistent);
if (authTicket.IsPersistent)
{
authCookie.Expires = authTicket.Expiration;
}
authCookie.Value = FormsAuthentication.Encrypt(authTicket);
HttpContext.Current.Response.Cookies.Add(authCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
問題: 問題は、フォーム認証のタイムアウトを 4 時間に設定した場合でも、ユーザーがログイン後 30 分後にログイン ページにリダイレクトされることです。
web.configに含めたり除外したりしてみましSessionSate
たが、注意が必要です。SessionState
それでも問題は同じままです。これが私の以下のweb.cofigコードです。
Web.config (sessionState 要素なし)
<authentication mode="Forms">
<forms loginUrl="~/LogOn/LogOn" requireSSL="false" timeout="240" defaultUrl="~/Home/Home" name="__appcookie" path="/" slidingExpiration="true" ticketCompatibilityMode="Framework40" protection="All">
</forms>
</authentication>
Web.config (sessionState 要素を使用)
<sessionState timeout="240"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/LogOn/LogOn" requireSSL="false" timeout="240" defaultUrl="~/Home/Home" name="__appcookie" path="/" slidingExpiration="true" ticketCompatibilityMode="Framework40" protection="All">
</forms>
</authentication>
web.configsessionState
にを含めることが本当に重要であることを誰か教えてください。sessionTimeout
アプリケーション全体でしか使用できないformAuthentication
のですか?
使用sessionState
してもしなくても、 だけでもform authentication
、ユーザーはアプリケーションにログインしてから 30 分後にログイン ページにリダイレクトされました。(しかし、私はすでに 240 分を として設定していますform authentication timeout
)。
どなたか、これに関するアイデアや解決策を教えてください。
前もって感謝します!