是否有一种简单的方法可以用具有另一个用户属性的IPrincipal替换当前的User对象(控制器内部)?我正在考虑用户Windows身份验证和AD组的环境,因此需要复制所有AD属性。
“硬”方式是进行LDAP查询并实现IPrincipal接口,但我想避免这种情况。
答案 0 :(得分:1)
我通过向我的基本控制器添加这样的属性来解决这个问题:
new public IPrincipal User
{ //we override User for impersonation
get {
if (/*check for impersonation*/)
{
return /*impersonated*/;
}
else
{
return base.User;
}
}
}
答案 1 :(得分:0)
创建一个接口/类来包装对当前用户对象的访问。您的自定义服务可以返回用户对象或您想要的任何内容,并且可以很容易地在测试中进行模拟。