문제

내가 하고 있는 일은 web.xml 파일에서 야외 및 공유 세션 시간 초과 시간을 60분으로 설정하는 것입니다.

내 시나리오는

  1. 시작 워크 플로 페이지에서 워크 플로를 시작하려면 필요한 모든 데이터를 채우지 만 "워크 플로트 시작"버튼을 클릭하지 마십시오.
  2. 세션 시간이 초과되면 이 "워크플로 시작" 버튼을 클릭합니다.
  3. 처음으로 인증 상자가 열리고 사용자 이름 및 비밀번호를 요청합니다.
  4. 다른 사용자의 사용자 이름과 비밀번호를 입력했습니다.
  5. 인증된 다른 사용자로 워크플로를 시작합니다.
  6. 세션 타임 아웃의 경우 다른 시간에 인증 상자를 요청하지 않지만 이전에 요청 된 인증 된 사용자를 위해 행동합니다.

그래서 나는 생각한다 왜 그런 일이 발생합니까 ???쿠키 때문인가요??

현재 alfLogin, alfUsername2, JSSESSIONID, _alfTest라는 4개의 쿠키가 사용됩니다.사용자가 로그아웃한 경우에만 alfUsername2 쿠키는 삭제되고 다른 쿠키는 남습니다. alfLogin 및 alfUsername2 쿠키의 만료 시간은 7일이며 다른 쿠키는 세션에 따라 다릅니다.

세션 시간이 초과된 후에도 야외 웹 스크립트를 계속 사용할 수 있습니까? 그렇다면 어떻게 하면 이 상태를 피할 수 있습니까?

도움이 되었습니까?

해결책

내 질문에 답해야 하지만 결과를 공유하고 싶습니다.많이 추적해야 해요.그런데 대답은 너무 간단해요.

첫째, 쿠키 때문이 아닙니다.

이 답변은 "워크플로 시작" 버튼을 클릭하는 것뿐만 아니라 공유 세션 시간 초과 후 야외 웹스크립트 호출.

야외 웹스크립트에 대한 모든 호출은 다음에 의해 수행됩니다. EndPointProxyController 구체적으로 org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController ~에 spring-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
                }   

우리는 다음과 같이 이 조건을 피할 수 있습니다.

~에 endpointController ~의 새총-응용 프로그램-context.xml, 변화 basicHttpAuthChallenge를 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top