java - Thymeleaf 中的 Spring 安全表达式

标签 java spring spring-boot spring-security thymeleaf

使用 Spring Boot 1.5.2 和 Thymeleaf 2.1,我试图在 HTML 页面上添加一些代码来识别用户的角色。

但是,所有这些陈述的计算结果都是正确的,这是不正确的:

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

用户.java

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

角色.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;
    }

}

最佳答案

我解决了这个问题。我遗漏了三个项目:

thymeleaf-extras-springsecurity4

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

html模板中的xmlns:sec

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

正确输出

当具有 ROLE=USER 的用户登录时呈现模板时,现在会显示“具有权限 USER”

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

关于java - Thymeleaf 中的 Spring 安全表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42906027/

相关文章:

java - 嵌入 hsql 的一些有趣的事情

java - 为具有不同模式的多个数据库生成 jOOQ 代码

java - 尝试在组件 : DropDownChoice 的空模型上设置模型对象

java - Heroku 上的 Spring 和 CloudAMQP 给出 "Unknown Host Exception"

java - 是否可以在@RequestParam中有条件地赋值Required?

java - 有没有办法在 Elasticsearch 中连接同一对象之间的属性?

java.lang.IllegalArgumentException : The character [_] is never valid in a domain name

spring-boot - Logback 是否也受到 Spring Boot 中的 Log4j 零日漏洞问题的影响?

java - 如何使用我的子模块中的 application.yml 文件?

spring - 如何在 Spring Boot Thymeleaf 模板引擎中链接另一个 html 页面?