0

私がやっていることは、web.xmlファイルで屋外と共有の両方をセッションタイムアウト時間60分に設定することです。

私のシナリオは

  1. [ワークフローの開始]ページでワークフローを開始したい場合、必要なすべてのデータを入力しますが、[ワークフローの開始]ボタンをクリックしません。
  2. セッションがタイムアウトした後、この「ワークフローの開始」ボタンをクリックします。
  3. 初めて、認証ボックスが開き、ユーザー名とパスワードを要求します。
  4. 他のユーザーのユーザー名とパスワードを入力しました。
  5. 認証された別のユーザーでワークフローを開始します。
  6. セッションタイムアウトの場合は、認証ボックスを要求しませんが、以前に要求された認証済みユーザーに対して機能します。

だから私はなぜそれが起こるのだと思いますか?クッキーのせいですか?

現在、使用されているCookieは、alfLogin、alfUsername2、JSSESSIONID、_alfTestの4つです。ユーザーがログアウトした場合のみ、alfUsername2 Cookieは削除され、他のCookieは残ります。alfLoginおよびalfUsername2 Cookieの有効期限は7日で、その他のCookieはセッションによって異なります。

セッションタイムアウト後も屋外Webスクリプトを使用できますか?もしそうなら、どうすればこの状態を回避できますか?

4

1 に答える 1

1

私は自分の質問に答えなければなりませんが、私は自分の結果を共有したいと思います。私は多くを追跡する必要があります。しかし、答えはとても簡単です。

第一に、それはクッキーのせいではありません。

この回答は、[ワークフローの開始]ボタンをクリックするだけでなく、共有でセッションがタイムアウトした後に屋外のWebスクリプトを呼び出すためのものです。

屋外ウェブスクリプトへのすべての呼び出しは、特にで行われEndPointProxyControllerます。org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyControllerspring-webscripts-1.0.0-sources.jar

メソッドではhandleRequestInternal、セッションがなく、basicHttpAuthChallengeがtrueの場合、基本認証ボックスは次のように表示されます。

            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
                }   

この状態を回避するには、

slingshot -application-context.xmlendpointControllerbasicHttpAuthChallengeをfalseに変更 します。

好き

   <!-- 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>
于 2012-10-09T11:39:35.783 に答える