Je construis une application OWIN Web-Hosted Web API 2 et j'utilise un modèle de référentiel générique et utilise Autofac pour l'injection de dépendances.OWIN Self-Host Web API 2: Comment injecter un utilisateur courant dans un référentiel générique avec Autofac
Ma classe de référentiel générique;
public abstract class Repository<T> : IRepository<T> where T : BaseEntity
{
private DbContext context_;
private Identity _currentUser; //This needs to be resolved
public Repository(DbContext context)
{
context_ = context;
}
public T Update(T item)
{
//item.ModifiedBy = _currentUser.UserName; // The value needs to be assigned
context_.SaveChanges();
return item;
}
}
Problème:
J'ai besoin d'accéder à l'utilisateur en cours et j'ai besoin de mettre à jour la base de données avec le champ ModifiedBy.
J'essaie d'éviter l'injection de constructeur, car l'objet de référentiel est créé à plusieurs endroits dans le projet en passant DbContext en tant qu'argument de constructeur.
Existe-t-il d'autres moyens de le faire sans trop modifier le code existant? Quelqu'un pourrait-il m'aider à réaliser mon exigence.
Note:
En variante I peut remplacer la méthode SaveChanges() dans la classe DbContext. Mais encore une fois je ne peux pas accéder au courant là.
Pouvez-vous m'expliquer davantage? Où devrais-je appeler cela du contrôleur? ou puis-je le définir dans ActionFilter? Cette méthode est-elle sûre? – Rahul
@Rahul comment comptez-vous authentifier et autoriser votre utilisateur? –
Oui, j'utilise l'authentification par jeton JWT et maintenant j'ai besoin d'accéder aux informations d'utilisateur à l'intérieur de Repo qui n'est pas au courant de la demande actuelle. – Rahul