Thymeleaf的秒:使用Spring的@Secured授权url

时间:2015-09-11 16:15:02

标签: java spring spring-mvc spring-security thymeleaf

我正在使用Spring MVC 4.X开发应用程序,使用spring security 4.X进行身份验证/授权,使用Thymeleaf 2.1.2进行视图层。我正在使用@Secured注释来控制对控制器的访问。问题是,Thymeleaf在解析sec:authorize-url属性时会忽略这些注释。有没有人有这方面的工作设置?

我的安全配置如下所示:

<http use-expressions="true" entry-point-ref="authEntryPoint" security-context-repository-ref="sessionRepository">
   <intercept-url pattern="/login/**" access="isAnonymous()"/>
   <intercept-url pattern="/**" access="hasRole('USER')" />
   <custom-filter position="FORM_LOGIN_FILTER" ref="usernamePasswordDomainAuthenticationFilter"/>
   <logout logout-url="/logout"/>
</http>

在servlet配置中,有

<security:global-method-security secured-annotations="enabled" />

控制器看起来像这样:

@Secured("ROLE_EXAMPLE")
@Controller
@RequestMapping("/example")
public class ExampleController {
}

我们使用此安装程序,因此安全性可全局保护所有控制器,如果需要,每个控制器(或控制器的方法,如果需要)可以限制访问。

一切正常,没有特定角色的用户无法访问受保护的控制器,thymeleaf-extras-springsecurity4显然已正确配置,因为sec-authorize="hasRole('EXAMPLE')"按预期工作(并且需要考虑@Secured)。

但我觉得在控制器和模板中声明角色很容易出错,所以我宁愿使用sec:authorize-url。通过调试,我发现它检查了 如果用户hasRole('USER'),在Security的xml配置文件中声明,但在使用@Secured时完全忽略sec:authorize-url注释。在最坏的情况下,我可以在安全性的配置文件中声明所有访问权限,但我更喜欢@Secured注释。

是否可以使此设置有效?

0 个答案:

没有答案