はじめに
解体新書という書籍にて11章のSpring セキュリティの内容について学習中に
画面表示の認可(権限による画面表示の切り替え)が実現不能でした。
一般ユーザでも管理者限定にしているボタンが出現。。
ソースとしてはHTMLに記載を追加するのみでした。
■menu.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
</head>
<body>
<div layout:fragment="menu" class="bg-light">
<ul class="nav nav-pills nav-stacked">
<li role="presentation">
<a class="nav-link" th:href="@{'/user/list'}">ユーザ一覧</a>
</li>
<li role="presentation" sec:authorize="hasRole('ADMIN')">
<a class="nav-link" th:href="@{'/admin'}">アドミン専用</a>
</li>
</ul>
</div>
</body>
</html>
問題点
サンプルソースと相違もなく原因が判明しなかった所、Qiitaで回答いただきました。
解決策
①ブラウザのデベロッパーツールでhtmlのソースを表示し、sec:authorize="hasRole('ADMIN')"
という記述がそのまま残ってしまっているか確認。
②残っていることを書く確認したので次にpom.xmlにて指定しているthymeleaf-extras-springsecurity
周辺の依存関係を確認。
③thymeleaf-extras-springsecurity5
からthymeleaf-extras-springsecurity6
に変更
⇒この対応にて改善しました。(画面表示の認可(権限による画面表示の切り替え)が実現)
根本原因
thymeleaf-extras-springsecurity5はSpring Security5
系統をターゲットとしているのに対し、実際に依存関係に含まれているバージョンは6.3であったためでした。