2

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

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

4

2 回答 2

1

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

    new public IPrincipal User
    { //we override User for impersonation
        get {
            if (/*check for impersonation*/)
            {
                return /*impersonated*/;
            }
            else
            {
                return base.User;
            }
        }
    }
于 2011-03-17T15:50:50.830 回答
0

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

于 2010-11-23T21:10:13.267 回答