現在のユーザー オブジェクト (コントローラー内のもの) を別のユーザーのプロパティを持つ IPrincipal に置き換える簡単な方法はありますか? Windows認証とADグループを利用する環境を考えているので、ADのプロパティをすべて複製したい。
「難しい」方法は、LDAP クエリを実行して IPrincipal インターフェイスを実装することですが、それは避けたいと思います。
現在のユーザー オブジェクト (コントローラー内のもの) を別のユーザーのプロパティを持つ IPrincipal に置き換える簡単な方法はありますか? Windows認証とADグループを利用する環境を考えているので、ADのプロパティをすべて複製したい。
「難しい」方法は、LDAP クエリを実行して IPrincipal インターフェイスを実装することですが、それは避けたいと思います。
このようなプロパティをベースコントローラーに追加することで、これを解決しました。
new public IPrincipal User
{ //we override User for impersonation
get {
if (/*check for impersonation*/)
{
return /*impersonated*/;
}
else
{
return base.User;
}
}
}
現在のユーザー オブジェクトへのアクセスをラップするインターフェイス/クラスを作成します。カスタム サービスは、ユーザー オブジェクトまたは任意のものを返すことができ、テストで簡単にモックアップできます。