2011-07-20 18 views
0

login.aspxでユーザー認証チケットの有効期限を過ぎたいasp.net login control - ユーザー認証チケットの有効期限を設定する

このコードは、1分後にユーザーがまだ認証されているため、正常に動作しません。

private int loginExpire = 1; 
protected void Login_LoggedIn(object sender, EventArgs e) 
{ 
    HttpCookie authCookie = Response.Cookies[FormsAuthentication.FormsCookieName]; 
    FormsAuthenticationTicket oldAuthTicket = FormsAuthentication.Decrypt(authCookie.Value); 

    var newAuthTicket = new FormsAuthenticationTicket(
       oldAuthTicket.Version, 
       oldAuthTicket.Name, 
       DateTime.Now, 
       DateTime.Now.Add    
       (TimeSpan.FromMinutes(loginExpire)), 
       oldAuthTicket.IsPersistent,  
       oldAuthTicket.UserData, 
       FormsAuthentication.FormsCookiePath); 



string encryptedTicket = FormsAuthentication.Encrypt(newAuthTicket); 
authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
HttpContext.Current.Response.Cookies.Set(authCookie); 

FormsAuthentication.RedirectFromLoginPage(GetDestinationPage(lgUserLogin.UserName), false); 
} 

のweb.config

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login.aspx" requireSSL="false" timeout="1"   slidingExpiration="true" protection="All"/> 
</authentication> 

答えて

1

編集認証web.configファイル内のセクションのためのフォーム要素:= "偽" またはその代わりに以下RedirectFromLoginPage方法の使用コード= "1" に設定タイムアウトとslidingExpiration :

String returnUrl; 
if (Request.QueryString["ReturnURL"] == null) 
{ 
    returnUrl = "/Default.aspx"; //your default page url 
} 
else 
{ 
    returnUrl = Request.QueryString["ReturnURL"]; 
} 
Response.Redirect(returnUrl); 
+0

あなたのケースではLogin_LoggedInイベントを処理しますか? – Alexandre

+0

はい、実質的にそれを減らすことができます:if(FormsContext.UserName、LoginControl.Password){FormsAuthentication.RedirectFromLoginPage(LoginControl.UserName、false); } –

+1

あなたはそれを真実にしておくことができますが、その場合にはタイムアウトをさらに待ってからページを更新するか、ポストバックを発生させる何らかのアクションを実行する必要があります –

関連する問題