Ik heb een probleempje met System.Net.Cookie. Het gaat hier om een server-app met een ingebakken webinterface op basis van HttpListener. Ik doe m'n eigen authenticatie en sessiemanagement, waarbij de sessie ID naar de browser wordt gestuurd als cookie wanneer de gebruiker de juiste inloggegevens heeft ingetypt. De betreffende code:
Werkt goed op één detail na: de browser laat de sessie verlopen zodra hij wordt gesloten; ofwel, de cookie wordt niet opgeslagen. Nu heeft de Cookie class ook een boolean property Discard, waarmee je juist dit aan kan geven (of de client de cookie al dan niet moet weggooien als hij gesloten wordt), maar deze staat default op false (expliciet op false zetten heeft dan ook geen effect).
Ik heb zelfs als alternatief geprobeerd om de cookie zelf te zetten, maar onderstaande code had tot gevolg dat de cookie helemaal niet ontvangen werd door de browser
Ik heb het idee dat het iets heel simpels is, maar na een paar uur "klooien" en googlen ben ik er nog niet uit...
C#:
1
2
3
4
| Cookie cookie = new Cookie(Session.SESSION_COOKIE, session.ID); cookie.Expires = DateTime.Now.AddYears(1); response.AppendCookie(cookie); response.Redirect(request.QueryString["goto"] == null ? "/" : request.QueryString["goto"]); |
Werkt goed op één detail na: de browser laat de sessie verlopen zodra hij wordt gesloten; ofwel, de cookie wordt niet opgeslagen. Nu heeft de Cookie class ook een boolean property Discard, waarmee je juist dit aan kan geven (of de client de cookie al dan niet moet weggooien als hij gesloten wordt), maar deze staat default op false (expliciet op false zetten heeft dan ook geen effect).
Ik heb zelfs als alternatief geprobeerd om de cookie zelf te zetten, maar onderstaande code had tot gevolg dat de cookie helemaal niet ontvangen werd door de browser
C#:
1
2
| string cookieHeader = Session.SESSION_COOKIE + "=" + session.ID + "; expires=" + DateTime.Now.ToUniversalTime().AddYears(1).ToString("ddd, dd-MMM-yyyy HH:mm:ss G\\MT", CultureInfo.InvariantCulture.DateTimeFormat) + "; domain=" + request.UserHostName + "; path=/"; response.Headers[HttpResponseHeader.SetCookie] = cookieHeader; |
Ik heb het idee dat het iets heel simpels is, maar na een paar uur "klooien" en googlen ben ik er nog niet uit...
4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1