【问题标题】:Impersonating a user in ASP.NET MVC for testing在 ASP.NET MVC 中模拟用户进行测试
【发布时间】:2011-05-14 17:41:31
【问题描述】:

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

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

【问题讨论】:

  • 我怀疑你把事情复杂化了。您能否展示您正在尝试测试的控制器操作?
  • 我不想测试单个控制器操作。在我的本地机器上运行应用程序时能够模拟特定用户并查看一切如何工作的想法。

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


【解决方案1】:

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

【讨论】:

  • 控制器中的用户属性是只读的,我不想重新实现MVC的认证。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多