2011-06-08 20 views
12

に有効期限をスライド私は、次のコードを使用して独自の認証チケットを作成しています:ASP.NET認証はカスタムチケット

string formsCookieStr = string.Empty; 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
      1,        // version 
      username,      // user name 
      DateTime.Now,     // issue time 
      DateTime.Now.AddMinutes(30), // expires 
      false,       // Persistence 
      userRoleData     // user data 
    ); 
formsCookieStr = FormsAuthentication.Encrypt(ticket); 
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr); 
HttpContext.Response.Cookies.Add(FormsCookie); 

私は有効期限がスライディング期限切れになりたい - クライアントがリクエストを送信するたびに、有効期限は30分にリセットする必要があります。ただし、ユーザーが初めてログインするときにのみチケットを作成します。ASP.NETは自動的に有効期限をスライドさせますか、スライドの有効期限を実装するには「手動で」何かを行う必要がありますか?

答えて

10

これはweb.configのformsセクションで設定されています。しかし、スライドの有効期限を有効にすると、ASP.NET Security Practicesに悪い習慣と見なさものの一つであることを

<authentication mode="Forms"> 
    <forms 
     loginUrl="~/Account/LogOn" 
     timeout="2880" 
     slidingExpiration="true" 
    /> 
</authentication> 

注:スライド式有効期限が動作する方法は、それぞれの上にASP.NETエンジンはタイムアウトをインクリメントすることにより認証Cookieを書き換え要求するということです。

+2

ありがとうございました。しかし、確かにカスタムチケットを使用しないときのデフォルトはスライドの有効期限です。さもなければ、ユーザーは最後のリクエストの現在の状態に関係なくログアウトされますか?私はこの振る舞いを観察しておらず、文書ではスライドの有効期限がデフォルトであると言います。カスタムチケットでデフォルトでスライド有効期限が切れていますか? (私はweb.configにslidingExpirationの設定がありません) – Journeyman

+11

"有効期限が切れる方法は、各リクエストでASP.NETエンジンがタイムアウトをインクリメントして認証Cookieを書き換えるというものです。" ... ASP.netは書き直すだけなのでタイムアウト値の半分以上が経過した場合は、認証チケット。 http://weblogs.asp.net/rajbk/archive/2004/10/11/241080.aspx – BrazenTongue

+0

@BrazenTongue - リンクは2017年2月現在で死んでいますが、代替品を提供することは可能でしょうか? – user3256944