14

Ninjectを使用してIPrincipalをAsp.netMvcのHttpContext.Current.Userにバインドするにはどうすればよいか疑問に思いました。

フレンドリーな挨拶、

ピッケル

編集:

それが重要かどうかはわかりませんが、私は自分のCustomPrincipalクラスを使用しています。

4

2 に答える 2

27

にプロバイダーを必要とせずにこれを行うことができますNinjectModule

Bind<IPrincipal>()
  .ToMethod(ctx => HttpContext.Current.User)
  .InRequestScope();

.InRequestScope()メソッドの値がHTTPリクエストごとに1回キャッシュされるようにするために含めたことに注意してください。プロバイダー メカニズムを使用している場合でも、そうすることをお勧めします。

于 2010-04-28T18:19:50.373 に答える
2

私はそれを得たと思います:

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>();

これが間違っているか完全でない場合はお知らせください。調整/削除します。

于 2010-04-28T16:42:05.833 に答える