在ASP.NET MVC中模拟用户进行测试

时间:2010-11-23 21:01:43

标签: c# asp.net-mvc ldap impersonation iprincipal

是否有一种简单的方法可以用具有另一个用户属性的IPrincipal替换当前的User对象(控制器内部)?我正在考虑用户Windows身份验证和AD组的环境,因此需要复制所有AD属性。

“硬”方式是进行LDAP查询并实现IPrincipal接口,但我想避免这种情况。

2 个答案:

答案 0 :(得分:1)

我通过向我的基本控制器添加这样的属性来解决这个问题:

    new public IPrincipal User
    { //we override User for impersonation
        get {
            if (/*check for impersonation*/)
            {
                return /*impersonated*/;
            }
            else
            {
                return base.User;
            }
        }
    }

答案 1 :(得分:0)

创建一个接口/类来包装对当前用户对象的访问。您的自定义服务可以返回用户对象或您想要的任何内容,并且可以很容易地在测试中进行模拟。