Tôi đang cố gắng kiểm tra đơn vị một đoạn mã cần có người dùng hiện đang đăng nhập trong thử nghiệm. Sử dụng Nhà cung cấp thành viên .Net 2.0, làm cách nào tôi có thể đăng nhập với tư cách là người dùng cho thử nghiệm này?đăng nhập có lập trình với nhà cung cấp thành viên .net
Trả lời
Mã của bạn có thực sự cần người dùng đăng nhập qua ASP.NET hay chỉ cần một CurrentPrincipal? Tôi không nghĩ rằng bạn cần đăng nhập vào trang web của bạn theo cách lập trình. Bạn có thể tạo một GenericPrincipal, đặt các thuộc tính bạn cần và đính kèm nó vào, ví dụ Thread.CurrentPrincipal hoặc một HttpContext giả lập. Nếu mã của bạn thực sự cần RolePrincipal hoặc một cái gì đó sau đó tôi sẽ thay đổi mã để được ít hơn cùng với thành viên ASP.NET.
Sử dụng nhà cung cấp tư cách thành viên của bạn, bạn có thể xác thực người dùng bằng Membership.ValidateUser. Sau đó, bạn có thể đặt cookie xác thực bằng cách sử dụng FormsAuthentication.SetAuthCookie. Miễn là bạn có một thùng chứa cookie, điều này sẽ cho phép bạn đăng nhập vào một người dùng.
Tôi thấy thuận tiện nhất khi tạo lớp dùng một lần xử lý cài đặt và đặt lại Thread.CurrentPrincipal.
public class TemporaryPrincipal : IDisposable {
private readonly IPrincipal _cache;
public TemporaryPrincipal(IPrincipal tempPrincipal) {
_cache = Thread.CurrentPrincipal;
Thread.CurrentPrincipal = tempPrincipal;
}
public void Dispose() {
Thread.CurrentPrincipal = _cache;
}
}
Trong phương pháp thử nghiệm bạn chỉ cần quấn cuộc gọi của bạn với một tuyên bố sử dụng như thế này:
using (new TemporaryPrincipal(new AnonymousUserPrincipal())) {
ClassUnderTest.MethodUnderTest();
}
if(Membership.ValidateUser("user1",[email protected]))
{
FormsAuthentication.SetAuthCookie("user1",true);
}
- 1. Nhà cung cấp thành viên ASP.NET - Đăng nhập một lần
- 2. Kiểm soát đăng nhập và nhà cung cấp tư cách thành viên tùy chỉnh
- 3. Kiểm tra nhà cung cấp thành viên không có ASP.NET
- 4. Nhà cung cấp thành viên Active Directory và Nhà cung cấp hồ sơ SQL
- 5. Nhà cung cấp tư cách thành viên ASP.NET với EF
- 6. Nhà cung cấp thành viên/vai trò ASP.NET cho Postgres?
- 7. Nhà cung cấp thành viên ASP.NET có email xác nhận
- 8. Khóa người dùng trong ASP .Net Nhà cung cấp tư cách thành viên tùy chỉnh
- 9. Nhà cung cấp thành viên và tuân thủ HIPAA
- 10. Nhà cung cấp thành viên asp.net tùy chỉnh
- 11. Nhận nhà cung cấp thành viên cụ thể
- 12. Ngôn ngữ lập trình .NET nào có nhà cung cấp CodeDom?
- 13. Có nhà cung cấp thành viên ASP.NET tùy chỉnh để bán với bảo mật bổ sung không?
- 14. Có ai đã viết hoặc sử dụng nhà cung cấp thành viên Asp.NET tích hợp với Facebook Connect không?
- 15. Tiêm phụ thuộc với Nhà cung cấp tư cách thành viên tùy chỉnh
- 16. Bật Nhà cung cấp Vị trí Lập trình trong Android
- 17. Làm thế nào để tích hợp nhà cung cấp thành viên IoC với ASP.NET MVC
- 18. Sử dụng tư cách thành viên asp.net với sqlite hoặc nhà cung cấp khác?
- 19. Thiết lập nhà cung cấp OpenID để thử nghiệm
- 20. Tôi có nên sử dụng nhà cung cấp thành viên tích hợp cho ứng dụng ASP .NET MVC không?
- 21. Sử dụng Flask-Social với Nhà cung cấp Oauth Chỉ, Không có Mẫu đăng ký/Đăng nhập Địa phương
- 22. Thiết lập Nhà cung cấp OAuth PHP
- 23. Có nhà cung cấp .net 4.0 cho IBM DB2 không?
- 24. Tích hợp Facebook Connect với trang web sử dụng Nhà cung cấp thành viên ASP.NET
- 25. Sử dụng Nhà cung cấp thành viên đơn giản với mysql
- 26. Nhà cung cấp tư cách thành viên tùy chỉnh ASP.NET MVC Lỗi Web.config
- 27. Nhà cung cấp thành viên nào triển khai người dùng được lưu trữ trong web.config?
- 28. Tiêm trong nhà cung cấp thành viên tùy chỉnh với StructureMap
- 29. WCF, Nhà cung cấp dịch vụ thành viên ASP.NET và dịch vụ xác thực
- 30. Nhà cung cấp tư cách thành viên tùy chỉnh cho asp.net bằng cách sử dụng C#
tôi cần những lời kêu gọi Membership.GetUser() để trả lại hiện đang đăng nhập người dùng. – ddc0660
Đừng gọi Memberhip.GetUser() trực tiếp trong lớp đang được kiểm tra. Cung cấp lớp với một IGetUser trong quá trình tạo, sử dụng nó thay cho Membership.GetUser(), sau đó thực hiện một giả lập của IGetUser để thử nghiệm. –