C# - Anonymous felhasználók azonosítása

forráskód letöltése
Mostani példánkban olyan megoldást keresünk ASP.NET-es alkalmazásainkhoz, melynek segítségével a felhasználókat akkor is tudjuk azonosítani, ha nem adnak meg felhasználói nevet és jelszót.
Mellékelt példa megnyitása előtt szükséges egy IdentifyUser nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A megvalósításhoz cookie-kat használunk, melybe eltárolunk egy egyedi azonosítót, mely a felhasználó gépét egyértelműen azonosítja. Ennek a megvalósításnak vannak hátrányai, például egy régi felhasználót csak addig tudunk azonosítani, amíg a cookie a gépén van. További hátrány, hogy ezzel a módszerrel valójában a felhasználó számítógépe kerül azonosításra, nem maga a személy. Ezekért cserébe viszont olyan rendszert kapunk, melynél nem szükséges a felhasználókat beléptetni felhasználói névvel, jelszóval, hanem az azonosításuk automatikusan megtörténik. Ez a módszer esetleg kombinálható egy szokásos felhasználói névvel, jelszóval történő azonosítással, így azok akik bejelentkeznek, egyértelműen azonosíthatók, akik nem jelentkeznek be, csak használják a web oldalainkat, azokról is kapunk némi információt.
A lap betöltésénél ellenőrizzük, hogy a kéréshez identifyuser néven tartozik-e cookie. Amennyiben igen, akkor már egy régi felhasználóról van szó, így annak egyedi azonosítóját az s változóba kiolvashatjuk.
    private void Page_Load(object sender, System.EventArgs e)
    {
      string s = "";
      string c = "identifyuser";
      if (Request.Cookies[c] != null)
      {
        s = Request.Cookies[c].Value;
        Label2.Text = "régi felhasználó";
      }
Amennyiben a kéréshez nem tartozik cookie, akkor új felhasználóval van dolgunk. Ekkor létre kell hoznunk számára egy új azonosítót. Ehhez az azonosítóhoz a DateTime osztály Now property-jének Ticks property-jét használjuk fel. Ez egy olyan 64 bites szám, mely 100 ns-os időegységekben számlálja az 1. év január 1-jétől eltelt időt. Így minden felhasználónk egy egyedi számot kap, melyet hexadecimálissá alakítunk és sztringként tároljuk a cookie-ben, melynek lejárati idejét a DateTime osztály lehető legnagyobb értékére állítjuk be.
      else
      {
        s = DateTime.Now.Ticks.ToString("X");
        HttpCookie cookie = new HttpCookie(c, s);
        cookie.Expires = DateTime.MaxValue;
        Response.Cookies.Add(cookie);
        Label2.Text = "új felhasználó";
      }                    
      Label1.Text = s;
    }