5

Tôi đã có một ứng dụng được nối vào một cơ sở dữ liệu duy nhất.Asp.net ghi đè cài đặt thành viên khi chạy (asp.net mvc)

Ứng dụng hiện cần phải nối vào nhiều cơ sở dữ liệu. Những gì chúng tôi muốn làm là, sử dụng cùng một ứng dụng/tên miền/tên máy chủ/thư mục ảo cung cấp cho người dùng tùy chọn trên màn hình đăng nhập để chọn "Ứng dụng/Cơ sở dữ liệu" mà họ muốn kết nối.

Mỗi cơ sở dữ liệu có các bảng/dữ liệu/procs/etc ứng dụng cũng như các thành phần/vai trò aspnet.

Khi người dùng nhập tên người dùng/mật khẩu và chọn (chọn danh sách) ứng dụng, tôi muốn xác thực người dùng dựa vào cơ sở dữ liệu ứng dụng đã chọn.

Hiện tại chuỗi kết nối cơ sở dữ liệu cho các dịch vụ thành viên được lưu trong web.config. Có cách nào tôi có thể ghi đè điều này vào lúc đăng nhập không? Ngoài ra, tôi cũng cần chức năng "nhớ tôi" để hoạt động trơn tru. Cách thức hoạt động khi người dùng quay lại ứng dụng trong 5 giờ ... Quá trình này sẽ có thể xác định người dùng và ứng dụng và đăng nhập một cách thích hợp.

Trả lời

5

Cách duy nhất có thể là thay đổi chuỗi conn qua phản ánh:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

Tìm thấy ở đây: http://forums.asp.net/p/997608/2209437.aspx

Tại sao không chỉ thực hiện MembershipProvider của riêng bạn? Rất dễ làm và sau đó bạn có toàn quyền kiểm soát những gì đang xảy ra. Tôi chắc chắn bạn sẽ đưa ra một kịch bản tùy chỉnh khác mà nhà cung cấp mặc định không hoạt động tốt.

AFAIK chức năng nhớ tôi nên hoạt động chính xác cách mô tả của bạn miễn là người dùng không xóa cookie của họ.

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