Pregunta

Lo que estoy haciendo es establecer tanto al aire libre como compartir en el tiempo de espera de la sesión 60 minutos en su archivo web.xml.

Mi escenario es

  1. Cuando quiero iniciar un flujo de trabajo en la página de flujo de trabajo de inicio, llenamo a todos Datos necesarios, pero no haga clic en el botón "Iniciar flujo de trabajo".
  2. Después del tiempo de sesión, hago clic en este botón "Iniciar el flujo de trabajo".
  3. En la primera vez, la caja de autenticación se abre y solicita el nombre de usuario y contraseña.
  4. Llené el nombre de usuario y la contraseña de otro usuario.
  5. Inicia un flujo de trabajo con el usuario autenticado.
  6. Otras veces para el tiempo de espera de la sesión, no solicita la autenticación Caja, pero actúa para el usuario autenticado previamente solicitado.

    , así que creo que ¿Por qué sucede? ¿Es debido a la cookie ??

    Actualmente hay cuatro cookies utilizadas, a saber, Alflogin, Alfusername2, JSSSessionid, _Aftst. Solo cuando el usuario está desconectado, se elimina Alfusername2 Cookie y se ha eliminado a otros. El tiempo de caducidad de las cookies de Flogin y Alfusername2 es de 7 días y otras cookies dependen de la sesión.

    can script web ¡Todavía se usan después del tiempo de espera de la sesión? Si es así, ¿cómo puedo evitar esta condición?

¿Fue útil?

Solución

Aunque tengo que responder a mi propia pregunta, solo quiero compartir mi resultado.Tengo que rastrear mucho.Pero la respuesta es tan simple.

En primer lugar, no es debido a la cookie.

Esta respuesta no solo es solo para hacer clic en el botón "Iniciar el flujo de trabajo", sino también que llame a Alfresco WebScript después del tiempo de sesión en Compartir .

Todas las llamadas a Alfresco WebScript se realizan por EndPointProxyController específicamente org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController en spring-webscripts-1.0.0-sources.jar.

En el método handleRequestInternal, si no hay una sesión, y BASICHTTPAUTHLENGE es verdadero, se muestra la casilla de autenticación básica a continuación.

            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
                }   

Podemos evitar esta condición como

en endpointController de slingshot-application-context.xml , cambio basichttpauth.allenge to false.

como

   <!-- 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>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top