8
votes

La propriété userData de FormsAuthenticationticticket est vide malgré son ensemble

Pour une raison quelconque, je la propriété UserData de mon cookie d'authentification est vide. Voici le code:

if (HttpContext.Current.Request.IsAuthenticated )
{
    var authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (authCookie != null)
    {
        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        string data = authTicket.UserData;
        // data is empty !!!
    }
}


0 commentaires

4 Réponses :


7
votes

redirefromloginPage écrase votre cookie. Supprimez cette ligne et rediriger manuellement ( réponse.redirect ).


2 commentaires

J'utilise réponse.redirect mais toujours userData a obtenu une chaîne vide


J'ai posté ma question http://stackoverflow.com/questions/20816425/geting -formsaut hentitys-ticket-u serdata-as-vide-string



3
votes

C'est une réponse similaire que j'ai répondu il y a quelques jours.

https://stackoverflow.com/a/16365000/296861

Vous ne pouvez pas utiliser formesAuthentication.settauthcookie ou FormsAuthentication.redirectFromLoginPage Si vous créez FormsAuthenticationTicket par vous-même.


1 commentaires

J'ai réalisé que FormsAuthentication.gedirectrice a également ce problème. Récupération de l'URL et stocker dans une variable, puis la fixation du cookie et enfin, le redirect a résolu le problème.



0
votes

Il me semble que vous faisiez le même tutoriel ... J'ai rencontré le même problème dans mon cas Cela fonctionne dans mon cas


0 commentaires

0
votes

Une autre raison "Code> FormsAuthentinCtiket Code> peut être liquidée avec un userData ​​CODE> Valeur - qui entraîne le jeton d'authentification crypté généré par appelant formesAuthentication.crypt code > Sur le ticket d'authentification étant vide, c'est si null code> a été spécifié comme valeur pour le paramètre userData ​​code> du FormsAuthenticationticket code> constructeur .

Si vous avez Pas de données d'utilisateur spéciales à définir sur le ticket d'authentification, puis utilisez une chaîne vide comme argument au lieu de null code>. p>

c'est-à-dire, au lieu de: P>

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
    myAuthenticationTicketVersion, 
    authenticatedUserName, 
    DateTime.Now, 
    myExpirationDate,
    true, 
    ""); // Ok


0 commentaires