Ninjectを使用してIPrincipalをAsp.netMvcのHttpContext.Current.Userにバインドするにはどうすればよいか疑問に思いました。
フレンドリーな挨拶、
ピッケル
編集:
それが重要かどうかはわかりませんが、私は自分のCustomPrincipalクラスを使用しています。
Ninjectを使用してIPrincipalをAsp.netMvcのHttpContext.Current.Userにバインドするにはどうすればよいか疑問に思いました。
フレンドリーな挨拶、
ピッケル
編集:
それが重要かどうかはわかりませんが、私は自分のCustomPrincipalクラスを使用しています。
にプロバイダーを必要とせずにこれを行うことができますNinjectModule
。
Bind<IPrincipal>()
.ToMethod(ctx => HttpContext.Current.User)
.InRequestScope();
.InRequestScope()
メソッドの値がHTTPリクエストごとに1回キャッシュされるようにするために含めたことに注意してください。プロバイダー メカニズムを使用している場合でも、そうすることをお勧めします。
私はそれを得たと思います:
public class PrincipalProvider : IProvider
{
public object Create(IContext context)
{
return HttpContext.Current.User;
}
public System.Type Type
{
get { return typeof(CustomPrincipal); }
}
}
そして、私の NinjectModule では、次のことを行います。
Bind<IPrincipal>().ToProvider<PrincipalProvider>();
これが間違っているか完全でない場合はお知らせください。調整/削除します。