Как кошка я получаю имя пользователя на странице, которая не нуждается в написании - PullRequest
0 голосов
/ 13 октября 2019

Я установил web.ignoring().antMatchers("/index") в WebSecurityConfig.java. Таким образом, страница указателя не нуждается в создании, но я хочу получить имя пользователя на этой странице.

Когда я использую sec:authentication="name" на странице, которую необходимо создать. Я могу получить имя пользователя с кодом:

<spAn1 sec:authentication="name">Login</spAn1>

Конфигурация:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/index");
    }
}

Я хочу получить имя пользователя на всех страницах, включая страницу, которую не нужно создавать. Например, индекс

1 Ответ

0 голосов
/ 13 октября 2019

1) Сначала добавьте в свой проект безопасность thymeleaf в maven:

 <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

2) Затем перейдите в индексный файл и напишите код, подобный этому. Где some_tag - это ваш тег, где должно быть ваше имя пользователя, USER - это роль пользователя.

<some_tag sec:authorize="hasAuthority('USER')" class="nav-item">
  <span th:text="${#authentication.getPrincipal().getUsername()}"></span>
</some_tag>
<span th:text="${#authentication.getPrincipal().getUsername()}"></span>

ИЛИ вы можете просто проверить, аутентифицирован ли ваш пользователь, как там:

<div sec:authorize="isAuthenticated()">
  <span th:text="${#authentication.getPrincipal().getUsername()}"></span>
</div>

Внекоторая причина в intellij "getUserName ()" высылается как ошибка.

Для получения дополнительной информации см. ссылку: https://www.thymeleaf.org/doc/articles/springsecurity.html

...