どのようにクッキーASPXANONYMOUSからAnonymousIDを得るのですか?
-
21-09-2019 - |
質問
私は私にcookievalue .ASPXANONYMOUSを見ている場合は、文字列、すなわち
WZnX-rXHygEkAAAAOTFhZjE5YTctZmEzZi00MTMwLWEwNTAtYjYwMzI0N2M0NTY4gQUsRlThiJWAjBgmBnpeIba7eGo1
値Request.AnonymousIDはGUIDです。
どのようにしてASPXANONYMOUSからAnonymousIDに入手できますか?
私はFormsAuthenticationと共に、私が持っているいくつかの問題をデバッグするために、これを必要とする。
解決
はい、匿名IDはGUIDです。クッキー文字列は、IDおよび他のデータを含む暗号化された値である
[Serializable]
internal class AnonymousIdData
{
internal string AnonymousId;
internal DateTime ExpireDate;
internal AnonymousIdData(string id, DateTime dt);
}
デフォルトでは、匿名のクッキーは90日間有効で、すべての訪問に更新されます。
== falseのをRequest.IsAuthenticatedときは、要求ユーザ名としてRequest.AnonymousIDを扱うことができます。
を参照 AnonymousIdentificationModuleする
UPDATE: コメントを受けて、はい、あなたが値をデコードすることができますが、なぜですか?
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);
所属していません StackOverflow