如何更改user.identity.name的值

时间:2013-03-15 15:13:57

标签: asp.net

我认为这是一个非常基本的问题 - 但我不知道该怎么做。

我正在尝试使用不同的用户登录ID测试应用程序(因为这些用户具有不同的角色)。该应用程序使用系统用户的登录信息,并且没有自己的登录信息。 user.identity.name用于获取值。但是,我想覆盖此值以测试不同的用户登录。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

设置身份验证票证时,请在此处进行更改。我假设它使用Forms Auth(以用户身份登录)。

FormsAuthentication.RedirectFromLoginPage("Joe",false);

如果使用Windows身份验证,则可以使用模拟。

如果使用Windows身份验证,另一种方法是修改浏览器设置以提示您登录。然后以不同的用户身份登录。

答案 1 :(得分:1)

你总是可以用Moq

之类的东西来嘲笑它
Mock<ControllerContext> ControllerContextMock;
string UserName = "TestUser";
ControllerContextMock = new Mock<ControllerContext>();
ControllerContextMock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(UserName); 

这是我进行单位/行为测试的方式

根据我的评论,我正在为获取用户名

添加一个包装器
public string OverideName;

private string GetUserName()
{
    string name;
    if(OverideName != null && OverideName.Langth>0)
    {
       name = OverideName;
    }else
    {
       name = User.Identity.Name;
    }
    return name;
}

对于大多数旧的asp.net Web表单测试,这是测试内容的唯一方法

答案 2 :(得分:0)

我想做同样的事情。

我的想法是创造一个&#34;改变身份&#34;页面(只有我的应用程序中具有管理员角色的人才能访问)。然后,他们可以选择成为不同的人/角色来测试应用程序。

我的应用程序中的每个页面都会测试会话集用户ID和角色是否有效(在首次使用应用程序时设置)并加载页面以显示该用户/角色要查看的信息/功能。所以这&#34;改变身份&#34; function会将会话用户ID和角色设置为被测用户的身份和角色,并允许测试人员表现得好像他们是另一个人。还提供重置选项以重置给您。

答案 3 :(得分:0)

最简单的解决方案是当用户更新名称时 - 将他注销,并要求登录。 它为我工作