返回介绍

9.5.2 使用 Thymeleaf 的 Spring Security 方言

发布于 2024-08-17 00:45:49 字数 2406 浏览 0 评论 0 收藏 0

与Spring Security的JSP标签库类似,Thymeleaf的安全方言提供了条件化渲染和显示认证细节的能力。表9.8列出了安全方言所提供的属性。

表9.8 Thymeleaf的安全方言提供了与Spring Security标签库相对应的属性

属  性

作  用

sec:authentication

渲染认证对象的属性。类似于Spring Security的<sec:authentication/>JSP标签

sec:authorize

基于表达式的计算结果,条件性的渲染内容。类似于Spring Security的<sec:authorize/>JSP标签

sec:authorize-acl

基于表达式的计算结果,条件性的渲染内容。类似于Spring Security的<sec:accesscontrollist/> JSP标签

sec:authorize-expr

sec:authorize属性的别名

sec:authorize-url

基于给定URL路径相关的安全规则,条件性的渲染内容。类似于Spring Security的<sec:authorize/> JSP标签使用url属性时的场景

为了使用安全方言,我们需要确保Thymeleaf Extras Spring Security已经位于应用的类路径下。然后,还需要在配置中使用SpringTemplateEngine来注册SpringSecurity Dialect。程序清单9.10所展现的@Bean方法声明了SpringTemplateEngine bean,其中就包含了SpringSecurityDialect。

程序清单9.10 注册Thymeleaf的Spring Security安全方言

安全方言注册完成之后,我们就可以在Thymeleaf模板中使用它的属性了。首先,需要在使用这些属性的模板中声明安全命名空间:

在这里,标准的Thymeleaf方法依旧与之前一样,使用th前缀,安全方言则设置为使用sec前缀。

这样我们就能在任意合适的地方使用Thymeleaf属性了。比如,假设我们想要为认证用户渲染“Hello”文本。如下的Thymeleaf模板代码片段就能完成这项任务:

sec:authorize属性会接受一个SpEL表达式。如果表达式的计算结果为true,那么元素的主体内容就会渲染。在本例中,表达式为isAuthenticated(),所以只有用户已经进行了认证,才会渲染<div>标签的主体内容。就这个标签的主体内容部分而言,它的功能是使用认证对象的name属性提示“Hello”文本。

你可能还记得,在Spring Security中,借助<sec:authorize>JSP标签的url属性能够基于给定URL的权限有条件地渲染内容。在Thymeleaf中,我们可以通过sec:authorize-url属性完成相同的功能。例如,如下Thymeleaf代码片段所实现的功能与之前<sec:authorize> JSP标签和url属性所实现的功能是相同的:

如果用户有权限访问“/admin”的话,那么到管理页面的链接就会渲染,否则的话,这个链接将不会渲染。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文