2013-07-23 23 views
104

Tôi có mã mà tôi đang xem xét về thời gian phiên của trang web. Trong web.config tôi đã xem qua mã này.Hết thời gian chờ xác thực biểu mẫu so với sessionState timeout

<authentication mode="Forms"> 
    <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" /> 
</authentication> 

<sessionState timeout="30" /> 

Có ai biết nếu người đó có tiền lệ hơn người kia và họ khác nhau như thế nào. Cảm ơn.

+0

có thể trùng lặp của [Forms Authentication Timeout vs phiên Timeout] (http: // stackoverflow.com/questions/1470777/forms-authentication-timeout-vs-session-timeout) –

Trả lời

173

Họ là những thứ khác nhau. Giá trị Thời gian chờ xác thực mẫu đặt khoảng thời gian tính bằng phút mà cookie xác thực được đặt là hợp lệ, có nghĩa là sau value số phút, cookie sẽ hết hạn và người dùng sẽ không còn được xác thực nữa - chúng sẽ được chuyển hướng đến trang đăng nhập tự động-. Giá trị slidingExpiration=true về cơ bản là sau khi mọi yêu cầu được thực hiện, bộ hẹn giờ được đặt lại và miễn là người dùng thực hiện yêu cầu trong giá trị thời gian chờ, chúng sẽ tiếp tục được xác thực. Nếu bạn đặt slidingExpiration=false cookie xác thực sẽ hết hạn sau value số phút bất kể người dùng có yêu cầu trong giá trị thời gian chờ hay không.

Giá trị thời gian chờ SessionState đặt lượng thời gian mà nhà cung cấp phiên được yêu cầu lưu dữ liệu trong bộ nhớ (hoặc bất kỳ cửa hàng sao lưu nào đang được sử dụng, SQL Server, OutOfProc, v.v.) cho một phiên cụ thể. Ví dụ: nếu bạn đặt đối tượng trong Phiên sử dụng giá trị trong ví dụ của mình, dữ liệu này sẽ bị xóa sau 30 phút. Người dùng vẫn có thể được xác thực nhưng dữ liệu trong Phiên có thể không còn tồn tại nữa. Giá trị Session Timeout luôn được đặt lại sau mỗi yêu cầu.

+20

Một làm rõ: Thời gian chờ xác thực biểu mẫu đặt thời gian hết hạn cho [Ticket] (http://msdn.microsoft.com/en-us/ library/system.web.security.formsauthenticationticket.aspx) không nhất thiết cho cookie nơi vé có thể được lưu trữ. Cookie có thể không có thời gian hết hạn (thường được gọi là cookie phiên, có nghĩa là nó kéo dài cho đến khi người dùng đóng trình duyệt), hoặc thậm chí có thể không có cookie (xác thực biểu mẫu "không cần thiết"). Trong trường hợp cookie liên tục, xác thực biểu mẫu đặt hết hạn cookie và hết hạn vé vào cùng một thời điểm. – bmode

+1

người rõ ràng dữ liệu phiên từ bộ nhớ .... là IIS hoặc ASP.Net Engine hoặc CLR? – Mou

+9

Làm rõ thêm từ MSDN: "Để ngăn chặn hiệu suất bị xâm phạm và tránh cảnh báo nhiều trình duyệt cho người dùng đã bật cảnh báo cookie, cookie được cập nhật khi hơn một nửa thời gian đã chỉ định đã trôi qua". Vì vậy, thời gian chờ của cookie chỉ được đặt lại nếu quá nửa. Do đó, đề xuất đặt thời gian chờ là 2 lần. – user917170

16

Từ những gì tôi hiểu chúng độc lập với nhau. Bằng cách giữ thời gian chờ của phiên nhỏ hơn hoặc bằng thời gian chờ xác thực, bạn có thể đảm bảo mọi biến phiên của người dùng cụ thể không được duy trì sau khi xác thực đã hết thời gian chờ (nếu đó là mối quan tâm của bạn). câu hỏi). Tất nhiên, bạn sẽ phải xử lý thủ công các biến phiên khi đăng xuất.

Dưới đây là một phản ứng khá có thể trả lời câu hỏi của bạn hoặc ít nhất là điểm bạn đi đúng hướng:

5

Sự khác biệt là một (Thời gian chờ biểu mẫu) phải thực hiện với xác thực người dùng và người kia (Thời gian chờ phiên) phải thực hiện với dữ liệu được lưu trữ trong máy chủ lưu trữ trong bao lâu. Vì vậy, chúng là những thứ rất độc lập, do đó, chúng không được ưu tiên hơn cái kia.

13

Giá trị trượtExpiration = true về cơ bản là sau khi mọi yêu cầu được thực hiện, bộ hẹn giờ được đặt lại và miễn là người dùng thực hiện yêu cầu trong giá trị hết giờ, anh sẽ tiếp tục được xác thực.

Điều này không đúng. Thời gian chờ cookie xác thực sẽ chỉ được đặt lại nếu một nửa thời gian hết thời gian chờ.

Xem ví dụ https://support.microsoft.com/de-ch/kb/910439/en-us hoặc https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session-timeout/

+1

Bạn đúng. – user917170

2
 <sessionState timeout="2" /> 
     <authentication mode="Forms"> 
      <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/> 
     </authentication> 

Cấu hình này gửi cho tôi đến trang đăng nhập mỗi hai phút, mà dường như bàn cải các câu trả lời trước đó

+1

Điều đó có thể xảy ra nếu thông tin liên quan đến thông tin đăng nhập được lưu trữ trong các biến phiên và khi điều đó xóa, nó chuyển hướng đến thông tin đăng nhập. Vì vậy, nó phụ thuộc vào mã? – Steve

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