Puis-je ajouter quelque chose à la session utilisateur dans un MembershipProvider personnalisé?

StackOverflow https://stackoverflow.com/questions/1004862

  •  05-07-2019
  •  | 
  •  

Question

J'implémente un MembershipProvider personnalisé afin de transmettre les informations de connexion à un objet métier personnalisé que nous utilisons à plusieurs autres endroits de notre société. Mais une fois l'authentification authentifiée, j'aimerais enregistrer cet objet métier initialisé dans la session pour pouvoir l'utiliser ultérieurement dans d'autres pages. Laissez-moi vous donner un exemple.

public override bool ValidateUser(string username,string password)
{
    try
    {
        // I want to keep this "object" in the Session to be used later on
        CustomBusinessObject object = new CustomBusinessObject(username, password);

        return true;
    }
    catch (CustomBusinessAuthenticationException)
    {
        return false;
    }
}

Y at-il un moyen pour moi de faire cela? Je n'ai pas immédiatement trouvé le moyen d'obtenir un accès à l'objet Session en implémentant ce MembershipProvider personnalisé.

Était-ce utile?

La solution

Vous pouvez accéder à la session en appelant System.Web.HttpContext.Current. Créez simplement une propriété personnalisée sur votre fournisseur d’appartenance personnalisé qui vérifie si HttpContext.Current est null et si tel est le cas, renvoie null, sinon accédez à la valeur de la session en conséquence.

public object CustomObject
{
    get
    {
        if(System.Web.HttpContext.Current == null)
        {
            return null;
        }
        return System.Web.HttpContext.Current.Session["CustomObject"];
    }
    set
    {
        if(System.Web.HttpContext.Current != null)
        {
            System.Web.HttpContext.Current.Session["CustomObject"] = value;
        }
    }
}

Autres conseils

Vous devriez pouvoir accéder à System.Web.HttpContext.Current.Session .

N'oubliez pas que System.Web.HttpContext sera null si votre fournisseur est déjà utilisé en dehors du pipeline ASP.Net et qu'il est utilisé à l'intérieur de votre vous couplerez étroitement votre fournisseur à ASP.Net.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top