Question

Ce que je fais, c'est définir à la fois le temps d'attente en plein air et le partage sur un délai d'expiration de session de 60 minutes dans leur fichier web.xml.

Mon scénario est

  1. Lorsque je veux démarrer un workflow dans la page Démarrer le flux de travail, je remplit toutes les données nécessaires mais ne cliquez pas sur le bouton "Démarrer le workflow".
  2. Après l'expiration de la session, je clique sur ce bouton "Démarrer le workflow".
  3. À la première fois, la boîte d'authentification s'ouvre et demande le nom d'utilisateur et le mot de passe.
  4. J'ai renseigné le nom d'utilisateur et le mot de passe d'un autre utilisateur.
  5. Il démarre un flux de travail avec un autre utilisateur authentifié.
  6. D'autres fois pour le délai d'expiration de la session, il ne demande pas la boîte d'authentification, mais agit pour l'utilisateur authentifié précédemment demandé.

Donc je pense Pourquoi ça arrive ???Est-ce à cause des cookies ??

Actuellement, quatre cookies sont utilisés, à savoir alfLogin, alfUsername2, JSSESSIONID, _alfTest.Ce n'est que lorsque l'utilisateur est déconnecté que le cookie alfUsername2 est supprimé et les autres restent. Le délai d'expiration des cookies alfLogin et alfUsername2 est de 7 jours et les autres cookies dépendent de la session.

Le script Web en plein air peut-il toujours être utilisé après l'expiration du délai de session ? Si oui, comment puis-je éviter cette condition ?

Était-ce utile?

La solution

Même si je dois répondre à ma propre question, je souhaite simplement partager mon résultat.Je dois tracer beaucoup de choses.Mais la réponse est si simple.

Premièrement, ce n’est pas à cause des cookies.

Cette réponse ne consiste pas seulement à cliquer sur le bouton « Démarrer le flux de travail », mais également appeler un script Web en plein air après l'expiration de la session en partage.

Tous les appels vers alfresco webscript sont effectués par EndPointProxyController spécifiquement org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController dans spring-webscripts-1.0.0-sources.jar.

Dans handleRequestInternal méthode s'il n'y a pas de session et que basicHttpAuthChallenge est vrai, la boîte d'authentification de base est affichée comme ci-dessous.

            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
                }   

Nous pouvons éviter cette condition car

dans endpointController de slingshot-application-context.xml, changement basicHttpAuthChallenge sur false.

Comme

   <!-- 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top