2011-01-18 23 views
8

Tôi có hai trang web với các nhà cung cấp tư cách thành viên được viết trên cùng một máy chủ trong cùng một trang web trong các ứng dụng web khác nhau và các hồ bơi ứng dụng khác nhau.asp.net 'Ghi nhớ tôi' không hoạt động nữa với các hình thức xác thực

Trước đây tôi gặp sự cố, tôi không thể đăng nhập trên cả hai trang web cùng nhau. Nhờ vào số post của Remy, tính năng này hoạt động ngay bây giờ, tôi phải thêm thuộc tính name vào phần tử forms.
Nhưng bây giờ tôi có vấn đề là tùy chọn nhớ-tôi của điều khiển đăng nhập asp ngừng hoạt động. Người dùng được đăng xuất sau thời gian chờ phiên bình thường.

Việc xác thực-thuộc tính trong file web.config nhìn như sau:

<authentication mode="Forms" > 
    <forms loginUrl="~/UserMgmt/Login.aspx" timeout="400000" slidingExpiration="true" name="NameOfTheSite"/> 
</authentication> 

Cũng có tôi đặt tên cookie cho các hình thức authetication để tên khác nhau.

Có điều gì khác mà tôi phải thêm vào, để tính năng ghi nhớ tôi hoạt động không?

Cập nhật
Tôi đã quan sát thấy rằng nếu tôi vô hiệu hóa mã hóa và xác nhận cho các hình thức xác thực cookie, vấn đề biến mất. Nếu tôi kích hoạt mã hóa, xác nhận hoặc cả hai, vấn đề xảy ra mới.
Tôi cũng biết rằng nó độc lập với tên cookie phiên (thậm chí chúng có thể giống nhau). Có lẽ thông tin này giúp ai đó tìm ra điều gì đang xảy ra?

Cập nhật 1
Nhờ Jason Kealey giải pháp cho vấn đề này. Tôi sẽ không bao giờ tìm thấy nó. Trong khi chờ đợi, tôi đã tìm thấy thông tin tương ứng trong msdn. Trong How To: Configure MachineKey in ASP.NET 2.0 trong phần "Trang trại Triển khai Web cân nhắc" có chép rằng:

Nếu bạn muốn cô lập ứng dụng của bạn từ các ứng dụng khác trên cùng một máy chủ, đặt <machineKey> trong file Web.config cho mỗi ứng dụng trên mỗi máy chủ trong trang trại. Đảm bảo rằng bạn sử dụng các giá trị khóa riêng cho từng ứng dụng, nhưng sao chép từng khóa của ứng dụng trên tất cả các máy chủ trong trang trại.

+0

Đó là về những gì tôi có. Bạn có xóa các cookie hiện tại không? – Remy

+0

@Remy: Không, đã không làm việc, nhưng dù sao nó là một ý tưởng tốt! – HCL

+0

điều gì sẽ xảy ra nếu bạn thay đổi thời gian chờ thành một cái gì đó như 7 ngày (10080) thay vì 277+ (400000) ngày? –

Trả lời

9

Vấn đề có thể là bạn có chìa khóa xác nhận rằng sẽ được tự động tạo ra mỗi khi bạn khởi động quy trình công nhân. Cookie được mã hóa, nhưng khi bạn quay trở lại một khóa phía máy chủ mới được sử dụng và do đó cookie của bạn không thể được giải mã.

Check-out phần machineKey http://msdn.microsoft.com/en-us/library/ff649308.aspx

Đây là cái gì đó sẽ tạo ra phần machineKey cho bạn http://www.qualitydata.com/products/aspnet-membership/help/configuration/no-machinekey.aspx

+0

Tôi phải thừa nhận rằng tôi không hiểu câu trả lời của bạn có nghĩa là gì (vì kiến ​​thức của tôi về asp.net chỉ là rất ít). Quy trình công nhân là gì và tại sao nó được khởi động lại. Đây có phải là quá trình IIS lưu trữ web không? Nếu có, tại sao vấn đề này chỉ xảy ra khi tôi có hai nhà cung cấp thành viên. Nếu tôi chỉ có một, tất cả chạy tốt. Ngoài ra nếu tôi đọc các tài liệu liên kết, tất cả đều nói rằng tôi nên cấu hình phần phím máy nếu ứng dụng của tôi chạy trong một trang trại hoặc nếu tôi muốn chia sẻ thông tin đăng nhập giữa các ứng dụng. Nhưng tôi không muốn cả hai, rõ ràng không chia sẻ thông tin đăng nhập giữa các ứng dụng. – HCL

+0

Với thực tế là việc vô hiệu xác nhận làm cho mọi thứ hoạt động, tôi tin rằng mỗi lần nhóm ứng dụng (quy trình công nhân IIS) được đặt lại, nó sẽ tạo ra một khóa mới mà nó sử dụng để xác thực cookie của người dùng khi họ quay lại trang web của bạn. Nó có thể thiết lập lại do không hoạt động hoặc do một số lý do. (Và khóa mới không thể giải mã nội dung từ lần truy cập trước đó, vì nó không giống với nội dung ban đầu). Hãy thử thêm một cái gì đó được tạo ra với công cụ trên và cho chúng tôi biết nếu nó hoạt động. –

+0

Tôi tin rằng đây là giải pháp có khả năng nhất cho sự thật. – Greg

2

Hãy thử thiết lập tên miền để chắc chắn rằng cookie của nhớ được thiết lập một cách chính xác trong mọi trường hợp

<forms path="/" domain="nameof.com" ...the rest 
+0

+1 Không có may mắn với điều này, nhưng specifiying tên miền và đặc biệt thiết lập đường dẫn là một thử meaingfull. – HCL

+0

@HCL cũng kiểm tra cài đặt cookie ẩn danh. – Aristos

0

Các thời gian chờ cookie cũng bị hạn chế bởi IIS và mặc định là một cái gì đó thấp như 20 phút. Để thay đổi điều này:

  1. Mở trình quản lý IIS.
  2. Nhấp chuột phải vào trang web của bạn và chọn thuộc tính.
  3. Chọn tab ASP.NET và nhấp vào Chỉnh sửa cấu hình.
  4. Chọn tab Xác thực.
  5. Chọn Bật thời hạn trượt.
  6. Đặt thời gian chờ của cookie thành giá trị dài hơn. Để đặt thành 30 ngày, hãy nhập 30.00: 00: 00.
  7. Bấm OK và thoát khỏi trình quản lý IIS.

enter image description here

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