Отображение конкретного контента для анонимных пользователей с помощью Thymeleaf Security - PullRequest
0 голосов
/ 19 марта 2019

Я борюсь со следующим. У меня есть навигационная панель, и я хочу показать / скрыть определенный контент в зависимости от того, является ли пользователь анонимным / role_user / role_admin. Вот мой HTML:

    <html lang="en" xmlns:th="http://www.thymeleaf.org xmlns:sec="http://www.w3.org/1999/xhtml">
    <head>
        <title>Beer Tag Home</title>

    </head>
    <body>

    <nav class="navbar" role="navigation" id="mainNav">
        <div class="container">
            <a class="navbar-brand">Foo App</a> 

            <div class="navbar-collapse">
                <ul class="navbar-nav">
                    <li class="nav-item"><a About</li>
                    <li class="nav-item">FAQ</li>


                     <div class="row" th:if="not${#authentication.isAuthenticated()}">
//this here will not even let spring boot up the app
                    <li class="nav-item">LOGIN</li>
                </div>

<div class="row" <div th:if="${#httpServletRequest.isUserInRole('ROLE_USER')}">
                    <li class="nav-item">USER PANEL</li>
                </div>

                </ul>
            </div>
        </div>
    </nav>

По сути, я хочу посмотреть, является ли пользователь Анонимным, если он может только войти в систему. Если пользователь вошел в систему, он может получить доступ к другому контенту на странице. Вот и мои зависимости от gradle:

компилировать ( "org.springframework.boot: весна-Boot-DevTools")

    compile 'mysql:mysql-connector-java'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    compile group: 'org.thymeleaf', name: 'thymeleaf', version: '3.0.11.RELEASE'
    compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity4', version: '3.0.4.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-security'

    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

Я прочитал почти все сообщения на SO по этой теме, но ни один из них не дает однозначного ответа.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Есть также хороший модуль тимилированного дополнения: https://github.com/thymeleaf/thymeleaf-extras-springsecurity

После добавления вы можете использовать его так:

<div sec:authorize="isAuthenticated()">
  This content is only shown to authenticated users.
</div>
<div sec:authorize="hasRole('ROLE_ADMIN')">
  This content is only shown to administrators.
</div>
<div sec:authorize="hasRole('ROLE_USER')">
  This content is only shown to users.
</div>
0 голосов
/ 19 марта 2019

Чтобы отобразить блок только для анонимных пользователей:

<div th:if="!${#request.userPrincipal}">
  <!-- content for anonymous -->
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...