J'ai un contrôleur où j'ai plusieurs méthodes. Dans la méthode de connexion, je démarre un Comment puis-je le déclarer globalement d'une manière où je peux l'utiliser dans d'autres méthodes d'action sans utiliser le Toute aide serait appréciée? P> httpcontext.session.setint32 ("id") code>, si la connexion réussit. Cet identifiant est l'identifiant de l'utilisateur connecté. J'utilise cet identifiant dans de nombreuses autres méthodes pour effectuer plus de calculs et de requêtes. Dans chaque méthode, je dois déclarer une variable comme
? int userid = httpcontext.session.get32 ("id") code> Pour utiliser cette variable dans cette méthode. p>
httpcontext.session.get32 code> instruction. J'essaie simplement d'utiliser le principe sec, de sorte que mon code soit plus propre. P>
3 Réponses :
public class HomeController : Controller { private readonly DataContext _context; private readonly IRepository _repo; public HomeController(DataContext context, IRepository repo) { this._context = context; this._repo = repo; } public int GetUserId() { return (int)HttpContext.Session.GetInt32("ID"); }
J'utilise MVC, puis-je simplement mettre la méthode getuserid () dans le contrôleur d'accueil. Je n'ai pas vraiment d'apibasecontroller.
Puisque vous utilisez MVC, il est évident que vous pouvez avoir un contrôleur de base. Le contrôleur de base est une classe que vous appliquez et non fournie par la classe de base lib. Fournissez votre implémentation de votre Homecontroller, je pourrais probablement vous aider avec ce que j'ai proposé.
@Faizanrahman, juste une suggestion par ex. Classe abstraite publique BaseController: contrôleur {privé Readonly DataContext _Context; IRÉPOSITOIRE READIANT PRIVÉE _REPO; Public Homecontroller (contexte de DataContext, IRPOSitory Repo) {this._Context = contexte; cela._repo = repo; } Public int getuserid () {return (int) httpcontext.session.get32 ("id"); }} CLASSE PUBLIC HOMECONTROLLER: BASECONTROLLER {// Passer les paramètres contentés requis, j'ai froid ne leur montrez pas en raison de la limite de caractères} code>
Si vous utilisez Identity , alors vous pouvez obtenir l'utilisateur de l'utilisateur comme ceci:
Le meilleur moyen de gérer la session (globalement) dans ASP.NET CORE est le suivant:
-------------------- How to use : Set session (Ex:Set session for UserId) > UserSession.UserId = 1; Get session (int id = UserSession.UserId)
Solution parfaite. Superbe @ kgajjar20