Autor Thema: Cookies  (Gelesen 2000 mal)

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Cookies
« am: 17.11.05 - 10:39:17 »
Hallo Leute,

über die Suche habe ich nichts Passendes gefunden.....

Wenn ich meine Datenbank über das WEB starte und mich authentifiziere, wird ein Cookie gesetzt.
Die Laufzeit diese Cookies wird über den Server bestimmt.
Das ist heir bei uns 20 Minuten.
Jetzt möchte ich aber in einer spezielle Datenbank  in einer Maske einen Button
einbauen, der diese Zeit verlängert.
Also so in der Art: "Möchten Sie immer angemeldet bleigen, dann clickern Sie bitte hier"

Kenn jemand da eine Möglichkeit??

Danke
Gruß
FRANKI

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Cookies
« Antwort #1 am: 17.11.05 - 11:07:16 »
Du kannst über Java Script darauf zugreifen, hier ein Beispiel aus der Notes Hilfe

Code
This servlet gets a token for Single Sign-on from the LtpaToken cookie through HttpServletRequest and creates a session based on the token.

import java.lang.*;
import java.lang.reflect.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import lotus.domino.*;

public class Cookies extends HttpServlet
{
  private void respond(HttpServletResponse response, String entity)
    throws IOException
    {
      response.setContentType("text/plain");
      if (entity == null)
      { response.setContentLength(0);}
      else
      {
        response.setContentLength(entity.length() + 1);
        ServletOutputStream out = response.getOutputStream();
        out.println(entity);
      }
  }

  public void doGet (HttpServletRequest request,
    HttpServletResponse response) 
    throws ServletException, IOException
    {
      String s1 = "";
      Cookie[] cookies = null;
      String sessionToken = null;
      try 
      {
        cookies = request.getCookies();
      }
      catch (Exception e)
      {   
        respond(response,"Exception from request.getCookies(): " +
          e.toString()); 
        return;
      }
      if (cookies == null)
      {
        s1 = "No cookies received";
      }
      else
      {
        for (int i = 0; i < cookies.length; i++)
        {
          if (cookies[i].getName().equals("LtpaToken"))
          {
            sessionToken = cookies[i].getValue();
          }
        }
      }
      if (sessionToken != null)
      {
        try
          {
          NotesThread.sinitThread();
          Session session = NotesFactory.createSession(null, sessionToken);
          s1 += "\n" + "Server:           " + session.getServerName();
          s1 += "\n" + "IsOnServer:       " + session.isOnServer();
          s1 += "\n" + "CommonUserName:   " + session.getCommonUserName();
          s1 += "\n" + "UserName:         " + session.getUserName();
          s1 += "\n" + "NotesVersion:     " + session.getNotesVersion();
          s1 += "\n" + "Platform:         " + session.getPlatform();
          NotesThread.stermThread();
          }
          catch (NotesException e)
          {
              s1 += "\n" + e.id + e.text;
              e.printStackTrace();
          }
      }

      respond(response,s1);
  }
}

Sry das Beispiel ist vieleicht besser:

Code
cookieName = "Cookie_Man";
function doCookie() {
 var index = -1;
 if(document.cookie) {
    index = document.cookie.indexOf(cookieName);
  }

  if (index == -1) {
    document.cookie = cookieName +
	"=1; expires=Saturday, 03-Apr-2010 08:00:00 GMT"; 
  } else {
    var countbegin = (document.cookie.indexOf("=", index) + 1);
    var countend = document.cookie.indexOf(";", index);
    if (countend == -1) {
      countend = document.cookie.length
    }
    var count = eval(document.cookie.substring(countbegin, countend)) + 1;
    document.cookie=cookieName+"="+count+"; expires=Saturday, 03-Apr-2010 08:00:00 GMT";
  }
}
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Cookies
« Antwort #2 am: 17.11.05 - 15:33:35 »
Hi stitze,

danke für die Info's.

Hab da mal ein wenig getestet.
Damit kann ich aber mein Problem nicht in den Griff bekommen.

Der Server setzt ein Cookie mit dem Namen "DomAuthSessId".
Das kann ich nicht überschreiben.
Und wenn das abgelaufen ist, dann bin ich auch abgemeldet.

Hat noch jemand einen Tip für mich??

Danke
Gruß
FRANKI

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Cookies
« Antwort #3 am: 17.11.05 - 18:14:25 »
Der "DomAuthSessId", den Domino setzt, ist ein sogenannter Session cookie,
der nur im Arbeitsspeicher des Webclients gehalten wird.

Ein Session cookie zeichnet sich gerade dadurch aus, dass er KEIN Ablaufdatum bzw. Verfallsdatum hat.

Die Zeitspanne, die Du im Server einstellst, ist die Zeit, wann Domino die Domino-Usersession automatisch beendet, falls in dieser Zeitspanne keinerlei Aktionen dieses Users eingehen und hat mit dem Cookie auf dem Client nicht direkt was zu tun. (Sobald eine Aktion vom Client gegen den Webserver läuft beginnt die Zeitspanne neu.)
Der User-Session cookie ist bei einer automatischen Beendigung durch Domino dann für Domino nicht mehr gültig, auch wenn dieser möglicherweise noch im Client-Arbeitsspeicher vorliegt.

Aus dieser Überlegung / Basis heraus ist Dein Vorhaben, die Verfallszeit des "DomAuthSessId" browserseitig zu ändern,  also ziemlich unmöglich, weil er keine hat.

Gruß,
Uwe

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Cookies
« Antwort #4 am: 17.11.05 - 19:12:53 »
... um an Uwes interessante Ausführungen noch etwas dranzuhängen:
Der Trick ist, dass für den Wert des Cookies serverseitig Ressourcen gehalten werden.
Der Server hat eine ganz große - sagen wir Tabelle - (dh. ähnlich wie LotusScript List oder Java HashMap), in der den Werten von den gerade aktiven Session-Cookies userobjekte zugeordnet sind.
Dh. der Notes Server liest den Session Cookie aus, schaut in die "Tabelle" und weiss, dass dieses oder jenes Userobjekt an den Wert des Cookies gebunden ist.
Diese Userobjekte auf dem Server werden nach der eingestellten Zeit entfernt. Der User hat zwar noch den Wert in seinem Cookie, aber die Tabelle aller userobjekte auf dem Server hat für diesen Wert kein Objekt mehr, weil dieses entsorgt wurde (sonst sammeln sich da auch immer mehr Objekte an).

So ähnlich funktionieren alle SessionCookies in allen Webumgebungen.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Cookies
« Antwort #5 am: 17.11.05 - 20:23:31 »
Auf der Webseite müsste dann ja nur ein JS laufen, dass z.B. via XMLHTTP request regelmässig eine Seite des Servers lädt. z.B. das icon/ecblank.gif :-)
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Cookies
« Antwort #6 am: 18.11.05 - 09:59:30 »
?????????????

so weit habe ich das verstanden.....nur......

""Auf der Webseite müsste dann ja nur ein JS laufen, dass z.B. via XMLHTTP request regelmässig eine Seite des Servers lädt. z.B. das icon/ecblank.gif :-)"


wie macht man das????

Danke
Gruß
FRANKI

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Cookies
« Antwort #7 am: 18.11.05 - 10:10:31 »
Mit folgenden JS FUnktionen
Code

function getXMLHTTP() {
	// function to create an XmlHttp object
	var xmlHttp = null;

	try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(oc) {
			xmlHttp = null;
		}
	}

	if(!xmlHttp && typeof XMLHttpRequest != "undefined") {
		xmlHttp = new XMLHttpRequest();
	}

	return xmlHttp;
}
und
Code

function getData()
{
try{
		var url ='/icons/ecblank.gif&hash='+Math.random();
		var xmlHttp = getXMLHTTP();
		xmlHttp.open("GET",url);			
	     xmlHttp.onreadystatechange = function() {
	      if (xmlHttp.readyState == 4 && xmlHttp.responseText) {
			var daten=xmlHttp.responseText;

         	} // state
         }; // function
   xmlHttp.send(null);
   
	} // try

	catch(e)
	{
		alert(e.description);
	}
} // getData



jetzt musst Du nur die Funktion getData in regelmässigen oder unregelmässigen Zeitabständen aufrufen.
evtl. bleibt so die Session erhalten.
Anstatt auf ecblank kannst Du auch auf eine URL in deiner DB zugreifen. Das ganze läuft im Hintergrund. Die Empfangenen Daten werden nicht direkt angezeigt.

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Cookies
« Antwort #8 am: 18.11.05 - 10:24:27 »
das war ein guter  8)
Ich mag besonders den hier: &hash='+Math.random(); (trickst alle caches aus)

@Franki: Versuch das doch einfach mal.
Für den geschedulten Aufruf vermutlich:
http://de.selfhtml.org/javascript/objekte/window.htm#set_interval

Der Trick ist: Damit die Zeit des User-Objekts auf dem Servers nicht verstreicht, werden aus dem Browser automatisch (d.h. ohne zutun des Users) in festgelegten Zeitintervallen calls gegen den Server abgesetzt.

Das sieht normalerweise sehr hässlich aus, weil die ganze Zeite neu geladen wird. Mit dem xmlhttpRequest (bekannt aus dem AJAX-Kontext) wird aber nur ein Teil der Seite neu geladen und es sollte kaum auffallen.

Bedingung dafür ist aber, dass du sicher sein mußt, dass auf die Webseite nur IE5.0 (und höher) oder Mozilla (1.2) bzw. Firefox drauf zugreifen.
« Letzte Änderung: 18.11.05 - 11:10:46 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Cookies
« Antwort #9 am: 21.11.05 - 10:13:23 »
Danke,

funktioniert;-))

Gruß
FRANKI

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz