2011-06-08 31 views
12

tôi đang tạo ra vé xác thực của riêng tôi bằng cách sử dụng đoạn mã sau:ASP.NET xác thực trượt hết thời gian trên vé tùy chỉnh

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); 

Tôi muốn kết thúc thời hạn là hết hạn trượt - mỗi lần khách hàng gửi một yêu cầu sau đó hết hạn phải được đặt lại thành 30 phút. Tuy nhiên, tôi chỉ tạo vé khi người dùng đăng nhập lần đầu. Liệu ASP.NET có tự động giữ thời gian hết hạn cho tôi hay tôi cần phải làm điều gì đó 'thủ công' để thực hiện hết hạn trượt?

Trả lời

10

Được định cấu hình trong phần forms của web.config. Cách trượt hết hạn hoạt động là trên mỗi yêu cầu cơ ASP.NET viết lại các cookie xác thực bằng cách tăng thời gian chờ: Tuy nhiên

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

Lưu ý rằng việc kích hoạt trượt hết hạn là một trong những điều được coi là xấu thực hành trong ASP.NET Security Practices.

+2

cảm ơn. Nhưng chắc chắn mặc định khi không sử dụng vé tùy chỉnh là trượt hết hạn, nếu không người dùng sẽ bị đăng xuất bất kể yêu cầu cuối cùng của họ như thế nào? Tôi không quan sát hành vi này, và các tài liệu nói rằng hết hạn trượt là mặc định. Tôi có bị trượt hết hạn theo mặc định với vé tùy chỉnh của tôi không? (Tôi không có cài đặt trượtExpiration trong web.config) – Journeyman

+11

"Cách trượt hết hạn hoạt động là trên mỗi yêu cầu động cơ ASP.NET ghi lại cookie xác thực bằng cách tăng thời gian chờ" ... Không hoàn toàn đúng, bởi vì ASP.net chỉ viết lại vé xác thực nếu hơn một nửa giá trị hết thời gian chờ đã trôi qua. http://weblogs.asp.net/rajbk/archive/2004/10/11/241080.aspx – BrazenTongue

+0

@BrazenTongue - liên kết đã chết vào tháng 2 năm 2017, liệu có thể cung cấp thay thế không? – user3256944

Các vấn đề liên quan