Могут ли веб-скрипты alfresco вызываться после тайм-аута сеанса?

StackOverflow https://stackoverflow.com//questions/12685236

Вопрос

Что я делаю, так это устанавливаю для alfresco и общего доступа время ожидания сеанса 60 минут в их файле web.xml.

Мой сценарий

  1. Когда я хочу запустить рабочий процесс на странице рабочего процесса Start, я заполняю все необходимые данные, но не нажимаю кнопку «Пуск рабочего процесса».
  2. По истечении времени сеанса я нажимаю кнопку «Начать рабочий процесс».
  3. В первый раз ящик для аутентификации открывается и запрашивает имя пользователя и пароль.
  4. Я заполнил имя пользователя и пароль другого пользователя.
  5. Он запускает рабочий процесс с аутентификацией другого пользователя.
  6. В других случаях для тайм -аута сеанса он не запрашивает поле аутентификации, но действует для ранее запрошенного пользователя аутентифицированного.

Я так думаю Почему так происходит???Это из-за куки??

В настоящее время используются четыре файла cookie, а именно alfLogin, alfUsername2, JSSESSIONID, _alfTest.Только когда пользователь выходит из системы, файлы cookie alfUsername2 удаляются, а другие остаются. Срок действия файлов cookie alfLogin и alfUsername2 составляет 7 дней, а срок действия других файлов cookie зависит от сеанса.

Можно ли использовать веб-скрипт alfresco после таймаута сеанса? Если да, то как мне избежать этого состояния?

Это было полезно?

Решение

Хотя мне придется ответить на свой вопрос, я просто хочу поделиться своим результатом.Мне нужно многое проследить.Но ответ так прост.

Во-первых, это не из-за файлов cookie.

Этот ответ предназначен не только для нажатия кнопки «Начать рабочий процесс», но и для вызов веб-скрипта alfresco после тайм-аута сеанса в общем доступе.

Все вызовы веб-скрипта alfresco выполняются 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