5

Tôi cần trợ giúp tìm hiểu lý do tại sao vé xác thực của tôi hết hạn sau khoảng một giờ trên trang web được lưu trữ của tôi. Nhưng nếu tôi chạy các trang web cục bộ vé xác thực vẫn còn sống cho đúng số lượng thời gian.tìm hiểu lý do tại sao vé xác thực asp.net hết hạn

Đây là web.config localhost của tôi:

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

và đây là web.config tổ chức của tôi:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="20160" slidingExpiration="true" domain=".mywebsite.com" path="/" /> 
</authentication> 

Tôi biết vé xác thực đã được tạo ra bởi vì:

  • Tôi có thể thấy trong cookie của trình duyệt
  • Tôi vẫn đăng nhập e vén sau khi đóng trình duyệt và mở lại
  • tôi luôn đăng nhập ngay cả sau khi tái chế website (thay đổi và tiết kiệm web.config để tái chế nó)

Khi tôi kiểm tra ngày hết hạn cookie trong trình duyệt đó là 2 tuần sau đó. Tuy nhiên, sau khoảng một giờ, xác thực của tôi luôn hết hạn.

Tôi có thể làm gì để tìm hiểu lý do xác thực của trang web được lưu trữ sắp hết hạn sớm như vậy? Tôi không biết cách giải quyết vấn đề này vì trang web được lưu trữ của tôi là trang duy nhất gặp sự cố.

Cập nhật 1: Sau khi chờ 1 giờ, tôi kiểm tra trình duyệt của mình và tôi thấy cookie vẫn tồn tại. Trên thực tế, ngày hết hạn được đặt trong 2 tuần sau đó. Nhưng nếu tôi tải lại trang hoặc thử truy cập bất kỳ trang nào yêu cầu xác thực, tôi được đưa đến trang đăng nhập.

+0

Chắc chắn vé đã hết hạn chứ không phải vấn đề phiên? –

+0

Tôi không sử dụng phiên nào cả trên trang web này. mọi thứ đều nằm trong vé xác thực có trong cookie. Ngoài ra, các phiên không có liên quan gì đến việc xác thực biểu mẫu phải không? – codette

+0

Đó là vé xác thực/cookie mà bạn đang đề cập đến -is- phiên. Cookie đó ".ASPXAUTH" duy trì phiên trên máy chủ. –

Trả lời

5

Tôi đã thêm mục nhập machinekey trong system.net. Một cái gì đó như thế này:

<machineKey validationKey="aaa" 
    decryptionKey="bbb" validation="SHA1" /> 

và bây giờ nó giúp người dùng đăng nhập. Tuy nhiên, có vẻ như tôi đang gặp sự cố về hiệu suất. Các trang được sử dụng để mất khoảng 500ms để tải bây giờ mất khoảng gấp đôi thời gian đó.

+0

Tôi đã có chính xác cùng một vấn đề và điều này cố định nó. Tôi chỉ xác định validKey và nó đã làm các trick mà không có hình phạt hiệu suất. Lời giải thích duy nhất tôi có thể đưa ra là chìa khóa được tạo tự động (đây là mặc định nếu bạn không chỉ định khóa rõ ràng) đang thay đổi vì một lý do nào đó bây giờ và sau đó. Vì tài liệu này có vẻ rất nghèo nàn, dưới đây là cách thực hiện: Thêm thẻ vào trong web.config và đặt validationKey thành chuỗi ký tự thập lục phân ngẫu nhiên (0-9 và A-F). Tổng chiều dài chuỗi phải chính xác là 128 ký tự. – smt

+0

Niềm vui của tôi còn quá sớm. Vấn đề vẫn tồn tại, do đó, thêm một validationKey rõ ràng đã không giúp đỡ sau khi tất cả. Không có ý tưởng làm thế nào để sửa lỗi này ngoài việc bán phá giá toàn bộ các công cụ FormsAuthentication và thực hiện một hệ thống xác thực tùy chỉnh. – smt

+0

Tôi tìm thấy mục nhập machinekey trong system.web không system.net. –

0

tôi sẽ cố gắng một vài điều trong xử lý sự cố này:

  • IIS phiên bản & thiết lập giữa bạn localhost & hosting. Nhiều khả năng có một số khác biệt trong hồ bơi ứng dụng thiết
  • Trong IIS 7, có một thiết lập đặc biệt cho việc này: read here
+0

Tôi không thể nói từ liên kết cho IIS 7 nhưng điều này ghi đè lên các thiết lập tôi chỉ định trong web.config của tôi? – codette

+0

Tôi không chắc chắn. nhưng bạn có thể muốn thử cấu hình IIS –

0

Có bạn hỏi nhà cung cấp hosting của bạn nếu Machine.config đã thiết lập này đến một giá trị khác nhau ? Các thiết lập trên machine.config sẽ ghi đè lên web.config.

+0

Có họ chỉ cho tôi machine.config và tôi không thấy bất kỳ phần xác thực nào trong đó. Vì vậy, tôi giả định rằng có nghĩa là giá trị web.config của tôi là những gì có hiệu lực. – codette