Csharp/C#教程:使用.net成员资格提供程序进行编程登录分享


使用.net成员资格提供程序进行编程登录

我正在尝试对测试中需要当前登录用户的一段代码进行unit testing。 使用.Net 2.0成员资格提供程序,如何以编程方式以此用户身份登录此测试?

if(Membership.ValidateUser("user1",P@ssw0rd)) { FormsAuthentication.SetAuthCookie("user1",true); } 

我发现创建一个处理设置和重置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; } } 

在测试方法中,您只需使用如下的using语句包装您的调用:

 using (new TemporaryPrincipal(new AnonymousUserPrincipal())) { ClassUnderTest.MethodUnderTest(); } 

您的代码是否确实需要通过ASP.NET登录的用户,还是只需要一个CurrentPrincipal? 我认为您不需要以编程方式登录到您的站点。 您可以创建GenericPrincipal ,设置所需的属性,并将其附加到,例如Thread.CurrentPrincipal或模拟的HttpContext。 如果您的代码实际上需要RolePrincipal或其他什么,那么我会将代码更改为与ASP.NET成员资格相关联。

使用您的成员资格提供程序,您可以使用Membership.ValidateUservalidation用户。 然后,您可以使用FormsAuthentication.SetAuthCookie设置身份validationcookie。 只要你有一个cookie容器,这应该允许你登录用户。

上述就是C#学习教程:使用.net成员资格提供程序进行编程登录分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/953509.html

(0)
上一篇 2021年11月19日
下一篇 2021年11月19日

精彩推荐