2015-03-06 16 views
19

Tôi đang sử dụng Spring Boot với Thymeleaf và Spring Security. Tôi đã có một cái nhìn đơn giản với một liên kết đăng nhập. Khi người dùng đăng nhập, tôi muốn thay đổi liên kết đăng nhập thành liên kết đăng xuất.Thymeleaf với Spring Security - cách kiểm tra xem người dùng có đăng nhập hay không?

tôi đã cố gắng:

<div sec:authorize="#{isAuthenticated()}"> 
    <a th:href="@{/logout}">Log out</a> 
</div> 
<div sec:authorize="#{isAnonymous()}"> 
    <a th:href="@{/login}">Log in</a> 
</div> 

nhưng nó không làm việc - nó sẽ hiển thị cả hai liên kết.

Trân trọng.

EDIT: I đã giải quyết. Tôi phải đăng ký phương ngữ Thymeleaf. Để làm được điều này, tôi đã tạo ra một lớp cấu hình mới, tạo ra SpringSecurityDialect đậu:

@Configuration 
public class ThymeleafConfig { 

    @Bean 
    public SpringSecurityDialect springSecurityDialect(){ 
     return new SpringSecurityDialect(); 
    } 
} 
+1

Tôi có cùng một vấn đề chính xác - cảm ơn bạn. Nó không phải là quá khó khăn để có được điều này làm việc. –

+0

Phương thức 'SpringSecurityDialect' chỉ có trong phiên bản '2.1.0.RELEASE'? Tôi không thể sử dụng phiên bản mới nhất => 2.1.2.RELEASE ... –

Trả lời

23

Theo thymeleaf docs không có biểu hiện spel là bắt buộc. Đây không phải là thuộc tính thứ.

Vì vậy, bạn có thể thử:

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

<div sec:authorize="isAnonymous()"> 
+1

Cảm ơn bạn đã trả lời :). – tomdavies

0

cũng có thể sử dụng sec:authorize="isFullyAuthenticated()" mà kiểm tra nếu nó một anonymousUserrememberMe.

 <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> 
Các vấn đề liên quan