私が当初考えていたとして代わりにアイデンティティの校長を置き換えるに私の最初の溶液をリファクタリング終わりました。私は新しい拡張WindowsPrincipalのインスタンスを作成するときにセキュリティ上の問題に遭遇したので、アイデンティティを置き換えることは面倒でした。私の認証モジュールで
public class ExtendedWindowsPrincipal : WindowsPrincipal
{
private readonly string _email;
public ExtendedWindowsPrincipal(WindowsIdentity ntIdentity,
string email) : base(ntIdentity)
{
_email = email;
}
public string Email
{
get { return _email; }
}
}
私はこのようなのHttpContextに元本を置き換え:派生クラスを作成する
var currentUser = (WindowsIdentity)HttpContext.Current.User.Identity;
HttpContext.Current.User =
new ExtendedWindowsPrincipal(currentUser, userEmail);
が私の考えでしたが、私はそれがIPrincipalを交換するのが賢明だ場合にわからないんだとどのようにそれは正しく行われています。 私はディレクトリから電子メールアドレスを検索するつもりですが、私はwを行ったのと同じように、すべてのユーザー情報を1か所で収集することを考えました。カスタム認証。 – PHeiberg
派生クラスの場合は、WindowsPrincipalを独自のExtendedWindowsPrincipalで置き換えても問題はありません。結局のところ、それはまだWindowsPrincipalです - 追加されたものがいくつかあります。 これを行うには、global.asaxとApplication_AuthenticateRequestを調べます。 –
IsInRoleを動作させるのに問題があり、IPrincipalの使用に時間を費やしたくないので、残りのユーザー情報をコンテキストアイテムに入れてしまいました。 ありがとうございます。 – PHeiberg