Zrobiłem prosty element oprogramowania pośredniego OWIN, który dostarczy mi obiekt User i doda go do HttpContext.Current.Items
, więc jest dostępny dla wszystkich kontrolerów i widoków dla każdego żądania.Użyj Ninject DI w moim własnym oprogramowaniu OWIN
Oto mój kod:
public class SetCurrentUserMiddleware : OwinMiddleware
{
public SetCurrentUserMiddleware(OwinMiddleware next) : base(next)
{
}
public override Task Invoke(IOwinContext context)
{
if (context.Request.User.Identity.IsAuthenticated)
{
// Do some work to get a userId... (omitted)
var repo = new UserRepository();
User user = repo.Get(userId);
HttpContext.Current.Items["CurrentUserContext"] = user;
}
return Next.Invoke(context);
}
}
Używam Ninject w mojej aplikacji internetowej - Jak mogę byłaby to middleware tak, że mój UserRepository wstrzykuje się jako zależność? Czy to w ogóle możliwe?
Czy wybrałeś jakąkolwiek implementację. Też mam to pytanie – Saravanan
Mam nadzieję, że nie robię głupiego pytania, ale czy próbowałeś związać je wewnątrz swojego kontenera IoC/DI? 'Bind(). Do ();' –