Frage

Was ich mache, ist, dass ich sowohl Alfresco als auch Share in ihrer web.xml-Datei auf eine Sitzungszeitüberschreitungszeit von 60 Minuten einstelle.

Mein Szenario ist

  1. Wenn ich einen Workflow auf der Start -Workflow -Seite starten möchte, fülle ich alle erforderlichen Daten aus, klicke jedoch nicht auf die Schaltfläche "Workflow starten".
  2. Nach Ablauf der Sitzungszeit klicke ich auf die Schaltfläche „Workflow starten“.
  3. Zum ersten Mal wird die Authentifizierungsbox geöffnet und nach Benutzername und Passwort anfordert.
  4. Ich habe den Benutzernamen und das Passwort eines anderen Benutzers eingegeben.
  5. Es startet einen Workflow mit dem authentifizierten anderen Benutzer.
  6. In anderen Fällen für Sitzungszeitlimiten wird kein Authentifizierungsfeld angefordert, sondern für zuvor angeforderte authentifizierte Benutzer.

Also denke ich Warum passiert das???Liegt es am Cookie??

Derzeit werden vier Cookies verwendet, nämlich alfLogin, alfUsername2, JSSESSIONID, _alfTest.Nur wenn der Benutzer abgemeldet ist, wird das Cookie „alfUsername2“ gelöscht und andere bleiben erhalten. Die Ablaufzeit der Cookies „alfLogin“ und „alfUsername2“ beträgt 7 Tage und andere Cookies hängen von der Sitzung ab.

Kann das Alfresco-Webskript nach einem Sitzungs-Timeout weiterhin verwendet werden? Wenn ja, wie kann ich diesen Zustand vermeiden?

War es hilfreich?

Lösung

Obwohl ich meine Frage selbst beantworten muss, möchte ich nur mein Ergebnis mitteilen.Ich muss viel nachspüren.Aber die Antwort ist so einfach.

Erstens liegt es nicht am Cookie.

Diese Antwort gilt nicht nur für das Klicken auf die Schaltfläche „Workflow starten“, sondern auch Aufrufen von Alfresco-Webscript nach Sitzungszeitüberschreitung in Share.

Alle Aufrufe von Alfresco-Webscript erfolgen über EndPointProxyController speziell org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController In spring-webscripts-1.0.0-sources.jar.

In handleRequestInternal Wenn keine Sitzung vorhanden ist und „basicHttpAuthChallenge“ „true“ ist, wird das Feld „Basisauthentifizierung“ wie unten angezeigt.

            else if (this.basicHttpAuthChallenge || descriptor.getBasicAuth())
            {
                // check for HTTP authorisation request (i.e. RSS feeds, direct links etc.)
                String authorization = req.getHeader("Authorization");
                if (authorization == null || authorization.length() == 0)
                {
                    res.setStatus(HttpServletResponse.SC_UNAUTHORIZED,
                            "No USER_ID found in session and requested endpoint requires authentication.");
                    res.setHeader("WWW-Authenticate", "Basic realm=\"Alfresco\"");

                    // no further processing as authentication is required but not provided
                    // the browser will now prompt the user for appropriate credentials
                    return null;
                }
                else
                {
// other coding
                }   

Wir können diesen Zustand vermeiden als

In endpointController von slingshot-application-context.xml, ändern basicHttpAuthChallenge auf false.

Wie

   <!-- Override EndPointProxyController to enable Basic HTTP auth challenge on 401 response -->
   <bean id="endpointController" class="org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController">
      <property name="cacheSeconds" value="-1" />
      <property name="useExpiresHeader"><value>true</value></property>
      <property name="useCacheControlHeader"><value>true</value></property>
      <property name="configService" ref="web.config" />
      <property name="connectorService" ref="connector.service" />
      <property name="supportedMethods"><null/></property>
      <property name="basicHttpAuthChallenge"><value>false</value></property>
   </bean>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top