0
votes

ASP.NET CORE SESSION Etat

J'ai un contrôleur où j'ai plusieurs méthodes. Dans la méthode de connexion, je démarre un httpcontext.session.setint32 ("id") , 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") Pour utiliser cette variable dans cette méthode.

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 httpcontext.session.get32 instruction. J'essaie simplement d'utiliser le principe sec, de sorte que mon code soit plus propre.

Toute aide serait appréciée?


0 commentaires

3 Réponses :


2
votes
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");
    }

3 commentaires

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}



1
votes

Si vous utilisez Identity , alors vous pouvez obtenir l'utilisateur de l'utilisateur comme ceci: xxx


0 commentaires

0
votes

Le meilleur moyen de gérer la session (globalement) dans ASP.NET CORE est le suivant:

1). Ajouter une classe statique SessionExtensions.cs h3>
--------------------
How to use :

Set session (Ex:Set session for UserId) > UserSession.UserId = 1;
Get session (int id = UserSession.UserId)


1 commentaires

Solution parfaite. Superbe @ kgajjar20