2017-03-20 8 views
0

Springブート1.5.2とThymeleaf 2.1を使用して、HTMLページにコードを追加して、ユーザーの役割を特定しようとしています。ThymeleafのSpringセキュリティ式

しかし、これらのステートメントのすべてが間違っているtrueと評価:

<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"> 

正しい出力

「があり、私は3つの項目が欠落していました権限USER "が表示される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セクションに秒が定義されていますか。このように:

<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 
関連する問題