0

Si je regarde mon cookievalue .ASPXANONYMOUS est une chaîne-à-direComment obtenez-vous AnonymousID de cookie ASPXANONYMOUS?

WZnX-rXHygEkAAAAOTFhZjE5YTctZmEzZi00MTMwLWEwNTAtYjYwMzI0N2M0NTY4gQUsRlThiJWAjBgmBnpeIba7eGo1

La valeur Request.AnonymousID est un Guid.

Comment obtenez-vous de ASPXANONYMOUS à AnonymousID?

J'ai besoin de cela pour déboguer certains problèmes que j'ai avec FormsAuthentication.

Répondre

4

Oui, un identifiant anonyme est un GUID. La chaîne de cookie est une valeur chiffrée contenant l'identifiant et d'autres données:

[Serializable] 
internal class AnonymousIdData 
{ 
    internal string AnonymousId; 
    internal DateTime ExpireDate; 

    internal AnonymousIdData(string id, DateTime dt); 
} 

Par défaut, les cookies anonymes sont valides pendant 90 jours et sont mises à jour chaque visite.

Vous pouvez traiter Request.AnonymousID comme le nom d'utilisateur de la requête lorsque Request.IsAuthenticated == false.

voir AnonymousIdentificationModule

MISE À JOUR: En réponse à un commentaire, oui, vous pouvez décoder la valeur, mais pourquoi?

string aId = Request.AnonymousID; 

string anonCookieValue = Request.Cookies[".ASPXANONYMOUS"].Value; 
MethodInfo method = typeof(AnonymousIdentificationModule).GetMethod("GetDecodedValue", BindingFlags.Static | BindingFlags.NonPublic); 
object anonymousIdData = method.Invoke(null, new object[] { anonCookieValue }); 
var field = anonymousIdData.GetType().GetField("AnonymousId", BindingFlags.Instance | BindingFlags.NonPublic); 
string anonymousId = (string) field.GetValue(anonymousIdData); 
field = anonymousIdData.GetType().GetField("ExpireDate", BindingFlags.Instance | BindingFlags.NonPublic); 
DateTime expired = (DateTime) field.GetValue(anonymousIdData); 

// why? just use Request.AnonymousID  
Debug.Assert(aId == anonymousId); 
+0

Pouvez-vous déchiffrer la chaîne de cookies? –

+2

Oui, voir mise à jour. mais pourquoi? –

+0

Question valide. Je suppose que parce que je veux totalement gâcher mon application :-) Mais le vrai problème est ce problème que j'ai: http://stackoverflow.com/questions/2448720/different-users-get-the-same-cookie- value-in-aspxanonymous –