Spring Security - проверка пользователя на авторизованность
Для данных целей я использую шаблонизатор thymeleaf. Появилась необходимость для залогиненных юзеров добавлять панель профиля на главной странице, а для разлогиненных - скрывать, потому что она им просто не нужна. Как проверить "авторизован ли пользователь" из html?
Нашел вариант атрибута sec:autorize="isAuthenticated()", но он красный и не работает, даже после того, как добавил зависимость, точно не помню, как называется, но ее постоянно в ветке данных вопросов форсят.
Также использовал стандартный тимлифовский th:if, чего я только туда не ставил, но у меня ничего не вышло(
Каким образом можно реализовать данную задачу?
Заранее спасибо (:
Не помогло:
А это то, что я пытаюсь сделать:
<div th:if="${#authorization.expression('isAuthenticated()')}">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="/">Site</a>
<form class="d-flex" th:method="post" th:action="@{/logout}">
<button class="btn btn-outline-success" type="submit">Выйти</button>
</form>
</div>
</nav>
</div>
Ответы (2 шт):
Как вариант, возможно не совсем верный, но в качестве бонуса можно будет показать пользовательский логин.
<div th:if="${login != null}">
<a href="/" th:text='${login}'></a>
</div>
<div th:if="${login == null}">
<a href="/login">Войти</a>
</div>
А в контроллере запрашивать логин текущего пользователя у системы аутентификации Spring и добавлять его к модели.
@GetMapping(path = "/")
public String index(
Model model
) {
String login = SecurityContextHolder.getContext().getAuthentication().getName();
model.addAttribute("login", login);
return "index";
}
Использовать во view проверку user на null
Так-же в Controller в GetMapping добавить в сигнатуру Principal principal, а в методе добавить одну строчку :
model.addAttribute("user", Сервис.getUserByPrincipal(principal));