Domanda

Cosa sto facendo è impostato sia all'avresco che di condividere il tempo di tempo di sessione 60 minuti nel loro file web.xml.

Il mio scenario è

.
    .
  1. Quando voglio avviare un flusso di lavoro nella pagina del flusso di lavoro Avvia, riempio tutto Dati necessari ma non fare clic sul pulsante "Avvia workflow".
  2. Dopo il tempo di sessione, faccio clic su questo pulsante "Start workflow".
  3. Alla prima volta, si apre la casella di autenticazione e la richiesta del nome utente e password.
  4. I riempito nome utente e password di un altro utente.
  5. Inizia un flusso di lavoro con l'autenticato un altro utente.
  6. Altre volte per il timeout della sessione, non richiede l'autenticazione scatola, ma agisce per utente autenticato in precedenza richiesto.

    Quindi penso perché succede ??? È a causa del cookie ??

    Attualmente ci sono quattro biscotti utilizzati, vale a dire alfogin, alfuseername2, jssessionid, _alftest. Solo quando l'utente è stato registrato, alfuseername2 cookie viene cancellato e altri sono rimasti.Alflogin e alfuseername2 Cookies 'Expire il tempo è di 7 giorni e altri cookie dipendono dalla sessione.

    Can Alfresco Web Script sarà ancora usato dopo il timeout della sessione? In caso affermativo, come posso evitare questa condizione?

È stato utile?

Soluzione

Anche se devo rispondere alla mia domanda, voglio solo condividere il mio risultato.Devo rintracciare molto.Ma la risposta è così semplice.

Prima di tutto, non è a causa del cookie.

Questa risposta non è solo solo per fare clic sul pulsante "Start Workflow", ma anche chiamando Alfresco WebScript dopo Time Out in Condividi .

Tutte le chiamate a Alfresco WebScript vengono eseguite da EndPointProxyController specificamente org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController in spring-webscripts-1.0.0-sources.jar.

Nel metodo handleRequestInternal se non è presente alcuna sessione e BasichTtauthChallenge è vera, la casella di autenticazione di base viene visualizzata come segue.

            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
                }   
.

Possiamo evitare questa condizione come

.

in endpointController di slingshot-application-context.xml , modifica BasichTtauthChallge a False.

come

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top