ThymeleafとSpring SecurityでSpring Bootを使用しています。ログインリンクのあるシンプルなビューがあります。ユーザーがログインしたら、ログインリンクをログアウトリンクに変更したいと思います。
私は試した:
<div sec:authorize="#{isAuthenticated()}">
<a th:href="@{/logout}">Log out</a>
</div>
<div sec:authorize="#{isAnonymous()}">
<a th:href="@{/login}">Log in</a>
</div>
しかし、それは機能していません-両方のリンクが表示されます。
宜しくお願いします。
編集:I 解決済みそれ。 Thymeleaf方言を登録する必要がありました。これを行うために、SpringSecurityDialect Beanを作成する新しい構成クラスを作成しました。
@Configuration
public class ThymeleafConfig {
@Bean
public SpringSecurityDialect springSecurityDialect(){
return new SpringSecurityDialect();
}
}
thymeleaf docs によると、スペル表現は不要です。これはth:属性ではありません。
だからあなたは試すことができます:
<div sec:authorize="isAuthenticated()">
<div sec:authorize="isAnonymous()">
anonymousUser
およびrememberMe
かどうかを確認するsec:authorize="isFullyAuthenticated()"
も使用できます。
<div class="button-group" sec:authorize="!isFullyAuthenticated()">
<a href="/login">Login</a>
<a href="/register">Register</a>
</div>
<div class="button-group" sec:authorize="isFullyAuthenticated()">
<a href="/logout">Logout</a>
</div>