_csrf всегда NULL и isAnonymous () всегда FALSE (после развертывания) - PullRequest
0 голосов
/ 14 октября 2018

У меня странная проблема (Spring 5.0.8, Spring Boot 2.0.5) с нашим проектом.Когда я запускаю его локально в моей среде Eclipse, он работает отлично.Под «этим» я подразумеваю, что выражение

<security:authorize access="isAnonymous()">
    <li class="navbar-item"><a href="/signin">
        <spring:message code="menu.signin" />
    </a></li>
</security:authorize>

оценивается нормально, пока пользователь не вошел в систему, он / она является анонимным.Этот код находится в нашем приложении уже 6 месяцев и работал отлично.

Поскольку я внес довольно много изменений в наши механизмы ведения журналов и начал переключать часть проекта на Thymeleaf (все работает нормально), я наконец создал новую WAR с Maven и развернул ее на EBS.

Теперь кажется, что не только

<security:authorize ...> 

больше не работает, _csrf-теги, которые оцениваются с использованием

<meta th:name="_csrf" th:content="${_csrf.token}" />
<meta th:name="_csrf_header" th:content="${_csrf.headerName}" />

, не могут быть оценены (только наСреда EBS - локально все в порядке).

Я начал отслеживать проблему в журналах и обнаружил, что приведенное выше выражение приводит к исключению

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'token' cannot be found on null

, которое может отсутствовать, когда _csrfnull.

Вопрос : Кто-нибудь когда-нибудь сталкивался с подобной проблемой?Я не ожидаю ответа на мою проблему здесь, но мне интересно, почему все может отлично работать на моей локальной установке и больше не работает при публикации на EBS?

Может ли быть проблема с моей конфигурацией (на основе аннотаций) и переменные / bean-компоненты в Spring не могут быть оценены при публикации?

Так как приведенный выше пример JSP не работает (и код Thymeleaf также), я ожидаю, что это проблема бэкэнда Spring, а неПроблема с тимьяном.

Спасибо за любые предложения по этому вопросу.

1 Ответ

0 голосов
/ 14 октября 2018

Как часто после публикации вопроса в Stackoverflow я обнаружил причину нестабильного поведения приложения.Я объявил @EnableAutoConfiguration в другом классе @Controller, что могло привести к некоторой путанице.После удаления декларации все работает отлично.

На самом деле я разобрался (снова), в чем причина поведения.После удаления второй EnableAutoConfiguration и построения WAR (у нас все еще есть JSP внутри приложения) все работало нормально.Затем я сделал несколько исправлений, повторно развернул WAR и проблема снова была такой же.

После обнаружил некоторое указание , что включенный spring-boot-starter-tomcat может помешать развертыванию, добавив

<dependencies>
..
..
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

сделал работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...