gpt4 book ai didi

java - 如何在Thymeleaf `sec:authorize`属性中使用Spring EL表达式

转载 作者:行者123 更新时间:2023-12-02 11:50:06 26 4
gpt4 key购买 nike

我有一个类用于存储方法安全表达式。

public final class MethodSecurityExpressions {
public static final String USER = "hasRole('USER')";
}

在 Controller 中我这样使用它,

@PreAuthorize(MethodSecurityExpressions.USER)
@GetMapping("path/to/list")
public String list(Model model) {
return "list";
}

在 Thymeleaf 模板中,我目前正在执行以下操作,

<ul sec:authorize="hasRole('USER')">
<li>...</li>
</ul>

但我想做这样的事情,

<ul sec:authorize="#{MethodSecurityExpressions.USER}">
<li>...</li>
</ul>

我正在使用 Spring Boot 1.5.8。我已通读 JSP tag library documentationThymeleaf documentation并进行了全面搜索,但没有找到任何有希望的东西。

有谁知道这是否可能,或者知道实现此目的的类似方法?

最佳答案

sec:authorize 属性评估 Spring Security 表达式。该表达式实际上是在特定于 SpringSecurity 的根对象上求值的 Spring EL 表达式。因此,一个适当的解决方案可能如下所示:

<div sec:authorize="${hasRole('#{T(org.example.MethodSecurityExpressions).USER)}'">
</div>

类方法安全表达式

package org.example;

public final class MethodSecurityExpressions {
public static final String USER = "USER";
}

来源:

https://github.com/thymeleaf/thymeleaf-extras-springsecurity https://docs.spring.io/spring/docs/4.3.12.RELEASE/spring-framework-reference/html/expressions.html

关于java - 如何在Thymeleaf `sec:authorize`属性中使用Spring EL表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47945701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com