2017-03-20 87 views
0

使用Spring Boot 1.5.2和Thymeleaf 2.1,我試圖在HTML頁面上添加一些代碼來標識用戶的角色。Thymeleaf中的Spring Security表達式

然而,所有這些語句的評價爲真哪個是不正確的:

<div sec:authorize="hasAuthority('ADMIN')" > Has Authority ADMIN </div> 
<div sec:authorize="hasAuthority('USER')" > Has Authority USER </div> 
<div sec:authorize="hasRole('ROLE_ADMIN')">Has Role ROLE_ADMIN</div> 
<div sec:authorize="hasRole('ROLE_USER')">Has Role ROLE_USER</div> 
<div sec:authorize="hasRole('ADMIN')">Has Role ADMIN</div> 
<div sec:authorize="hasRole('USER')">Has Role USER</div> 

User.java

@ManyToMany(cascade = CascadeType.ALL) 
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) 
private Set<Role> roles; 

Role.java

@Entity 
@Table(name = "role") 
public class Role { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "id") 
    private int id; 

    @Column(name = "role") 
    private String role; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getRole() { 
     return role; 
    } 

    public void setRole(String role) { 
     this.role = role; 
    } 

} 

回答

4

我修復了這個問題。我錯過了三個項目:

thymeleaf-額外-springsecurity4

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
</dependency> 

的xmlns:秒在HTML模板

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" 
    xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"> 

正確的輸出

「有權威用戶「現在顯示n在ROLE = USER的用戶登錄時呈現模板

<div sec:authorize="hasAuthority('USER')" > Has Authority USER </div> 
-1

聽起來很奇..

您確定已將Thymeleaf添加到您的項目中嗎?

如果Thymeleaf沒有包含在您的項目/文件中,那麼html頁面將呈現爲常規html頁面。因此,它可能看起來像你有所有角色,但實際上,該網站只是呈現爲普通的HTML。

您可以檢查您的Thymeleaf正確地與此渲染:

<p th:text="Hello World!" /> 
0

入住模板的一部分定義xmlns:sec - html

0

是否在頁面的html部分中定義了sec?像這樣:

<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 
相關問題