Jak na permanentni/persistentni cookies v asp.net


Dneska to byl zase zahul, ktery jsem dokoncil presne ve 12h a zacal jsem na nem delat uz vcera. O co slo? O nic vetsiho nez ukladani persistentnich(permanentnich) Cookies. Protoze je to opravdu silene, rozhodl jsem se to dat na blog, at ostatni tyto hruzy nezazivaji take 😀 :

Pole args je libovolny pocet hodnot, jejiz soucet je sudy, priklad:

string[] args = new string[] { "login", txtLogin.Text };

A ted jak to nefunguje..treba takto:

for (int i = 0; i < args.Length; i++)
{
    string nazev = args[i];
    HttpCookie cook = new HttpCookie(nazev, args[++i]);
    cook.Expires = DateTime.Now.AddYears(1);
    Response.Cookies.Set(cook);
}

Nefunguje to ani takto:

for (int i = 0; i < args.Length; i++)
{
    string nazev = args[i];
    page.Response.Cookies[nazev].Name = args[i];
    page.Response.Cookies[nazev].Value = args[++i];
    page.Response.Cookies[nazev].Expires = DateTime.Now.AddYears(1);
}

Nezkousejte to ani nahodou s hromadnymi Cookie:

//-Ziskam novou cookie nebo vezmu starou, bude li existovat
HttpCookie cook = GetExistsOrNew(page);
//-Pokusil jsem se ziskat starou cookie novym zpusobem 
//cook = page.Request.Cookies.Get(M.ja);
for (int i = 0; i<args.Length; i++)
{
    cook.Values[args[i]] = args[++i];
}
//-Nastaveni Expire jako hodnoty je zbytecne, i kdyz jsem to na internetu u persistentnich cookie videla jako nutne
cook.Values["Expire"] = "5 Days";
cook.Expires.AddDays(5);
cook.Domain = M.wa;
//-Je zbytecne nastavovat i vlastnost Cookie, tu musite nastavit ale ne v hromadne cookie, nybrz jednoduche
cook.Value = "";
page.Response.Cookies.Add(cook);

Zbyva jen napsat jak to teda funguje – jen takto:

for (int i = 0; i < args.Length; i++)
{
    string nazev = args[i];
    Response.Cookies[nazev].Name = args[i];
    Response.Cookies[nazev].Value = args[++i];
    Response.Cookies[nazev].Expires = DateTime.Now.AddYears(1);
}

A jeste na konec jediny zpusob jak cookie zrusit platnost:

Response.Cookies["login"].Expires = DateTime.Now.AddYears(-1);

Takze zapomente na mazani timto stylem:

Response.Cookies.Remove(M.ja);

Jeste neco, to pridavani cookie musi byt v kodu stranky nebo nejake stranky ze ktere odvozuje. Pridavat cookie pres HttpContext.Current jsem nezkousel.


Leave a Reply

Your email address will not be published.