web-dev-qa-db-ja.com

Thymeleaf with Spring Security-ユーザーがログインしているかどうかを確認する方法

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();
    }
}
26
tomdavies

thymeleaf docs によると、スペル表現は不要です。これはth:属性ではありません。

だからあなたは試すことができます:

<div sec:authorize="isAuthenticated()">

<div sec:authorize="isAnonymous()">
29
grid

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>
2
reversebind