Testte şu anda oturum açmış bir kullanıcının bulunması gereken bir kod parçasını test etmeye çalışıyorum. .Net 2.0 Üyelik Sağlayıcısı'nı kullanarak, bu sınama için kullanıcı olarak nasıl oturum açabilirim?.net üyelik sağlayıcısı ile programatik oturum açma
cevap
Kodunuzun ASP.NET üzerinden oturum açmış bir kullanıcıya gerçekten ihtiyacı var mı, yoksa sadece bir CurrentPrincipal'a mı ihtiyacı var? Programlı olarak sitenize giriş yapmanız gerektiğini düşünmüyorum. Bir GenericPrincipal oluşturabilir, ihtiyacınız olan özellikleri ayarlayabilir ve örneğin Thread.CurrentPrincipal veya alaylı HttpContext öğesine ekleyebilirsiniz. Eğer kodunuz aslında RolePrincipal veya bir şeye ihtiyaç duyarsa, daha sonra ASP.NET üyeliğine daha az eşleşmesi için kodu değiştirirdim.
Üyelik Sağlayıcınızı kullanarak, Membership.ValidateUser kullanarak bir kullanıcıyı doğrulayabilirsiniz. Daha sonra FormsAuthentication.SetAuthCookie'yi kullanarak kimlik doğrulama çerezini ayarlayabilirsiniz. Bir çerez kabı olduğu sürece, bu bir kullanıcı oturum açmanıza izin vermelidir.
Thread.CurrentPrincipal ayarını ve sıfırlanmasını işleyen tek kullanımlık bir sınıf oluşturmak için en uygun yöntemi buldum. Test yönteminde
public class TemporaryPrincipal : IDisposable {
private readonly IPrincipal _cache;
public TemporaryPrincipal(IPrincipal tempPrincipal) {
_cache = Thread.CurrentPrincipal;
Thread.CurrentPrincipal = tempPrincipal;
}
public void Dispose() {
Thread.CurrentPrincipal = _cache;
}
}
aynen bu şekilde bir using ifadesi ile çağrı sarın:
using (new TemporaryPrincipal(new AnonymousUserPrincipal())) {
ClassUnderTest.MethodUnderTest();
}
if(Membership.ValidateUser("user1",[email protected]))
{
FormsAuthentication.SetAuthCookie("user1",true);
}
- 1. OAuth ASP.NET üyelik sağlayıcısı
- 2. SQL .Net Üyelik Sağlayıcısı kullanıcıları oluşturmak için
- 3. ASP.NET MVC Özel Üyelik Sağlayıcısı Web.config Hata
- 4. HTTP Oturum anahtarı ile oturum açma isteği
- 5. ASP.NET olmadan üyelik sağlayıcısı sınama
- 6. RSACryptoServiceProvider ile oturum açma hızı
- 7. .NET Üyelik
- 8. Oturum açma, ASP.NET 4.0'a yükseltildikten sonra başarısız oluyor. 3.5
- 9. tembel yükleme ile hazır oturum oturum açma
- 10. Foreman ile oturum açma şişesi
- 11. DSA OpenSSL ile Oturum Açma
- 12. üyelik zaman aşımı ve oturum zaman aşımı
- 13. RavenDB ASP.NET oturum sağlayıcısı?
- 14. SilverStripe'de oturum açma oturumu açma
- 15. ASP.NET Üyelik sağlayıcısı için farklı karma algoritması?
- 16. ASP.NET MVC 4 Üyelik Sağlayıcısı ile Web API Kimlik Doğrulaması
- 17. Bir hesabı ASP.NET Üyelik Sağlayıcısı ile nasıl devre dışı bırakırım?
- 18. IoC Üyelik sağlayıcısı ASP.NET MVC ile nasıl bütünleştirilir MVC
- 19. tekli oturum açma
- 20. Oturum açma ve önceden oluşturulmuş oturum açma SessionManager sınıfı
- 21. Tek Oturum Açma Thinktecture ile IdentityServer v2
- 22. Sorunumu Uygulamamdaki Devise ile Oturum Açma
- 23. Python Denetim Görevlisi ile Oturum Açma
- 24. Android oturum açma/oturum açma oturumunu nasıl yönetebilirim?
- 25. Örnek Bir SAML Kimlik Sağlayıcısı için .NET kodu
- 26. Oturum açma olayında Meteor.js
- 27. DBCP'de oturum açma
- 28. UnexpectedNullableFold sol oturum açma
- 29. Oturum açma Engellenmeyi engelle?
- 30. python oturum açma
Ben Membership.GetUser çağrısı gerek() kullanıcı şu anda oturum açmış dönmek için. – ddc0660
Membership.GetUser() öğesini doğrudan test edilen sınıfta arama. Oluşturma sırasında bir IGetUser ile sınıfı tedarik edin, Membership.GetUser() yerine kullanın ve test için IGetUser'in sahte bir uygulamasını yapın. –