[英]Set how long a user is remembered with forms authentication
在我的asp.net Web表單應用程序中,我正在使用表單身份驗證。 我對這件事感到困惑:
我的web.config具有:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="Welcome.aspx">
</forms>
</authentication>
我的登錄按鈕如下所示:
protected void Login_Click(object sender, EventArgs e)
{
if (AuthenticateUser(UserNametxt.Text, Passwordtxt.Text))
{
FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, RememberMeCheckBox.Checked);
}
else
{
MessageLbl.Text = "Wrong UserName and/or Password.";
}
}
<forms
>具有可以設置的屬性timeout=""
。 我了解默認情況下該屬性為30
或30分鍾。 我認為該timeout屬性用於設置使用FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, RememberMeCheckBox.Checked)
來記住選中我的復選框的用戶被記住的時間,但是從我在線閱讀的內容來看,timeout屬性是登出前您可以在網頁上閑置多長時間。
如果是這樣,如何通過使用表單身份驗證檢查RememberMeCheckBox
用戶的時間?
我了解默認情況下該屬性為30或30分鍾。 我認為此超時屬性用於設置使用FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text,RememberMeCheckBox.Checked)來記住選中我的復選框的用戶要記住多長時間。
是的,你是對的。 FormsAuthentication超時默認值為30分鍾 。
我在網上閱讀的內容看起來像是timeout屬性,即您可以在退出之前閑置多長時間。
這稱為SessionState超時。 SessionState超時默認值為20分鍾 。
因此,如果我將SessionState超時設置為48小時,這是否意味着單擊“記住我”復選框的用戶將被記住並在48小時內通過該網站上的表單身份驗證自動進行身份驗證? (鑒於我上面的代碼)
如果將SessionState超時設置為48小時,則在用戶登錄后,該用戶可以使瀏覽器空閑48小時,而無需注銷。
因此,您的問題的答案為否。
在您的問題中,您只希望用戶在48小時內無需登錄。 如果是這樣,則需要將FormAuthentication超時設置為48小時。
以下設置將永久性Cookie設置為在48小時后過期。
<authentication mode="Forms">
<forms ... timeout="2880">
</forms>
</authentication>
您需要通過使用Cookies並設置其到期日期時間來做到這一點。 如果存在Cookie,請將其刪除。 設置一個具有您首選的到期日期時間的新cookie。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.