返回介绍

14.2 使用表达式实现方法级别的安全性

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

尽管@Secured和@RolesAllowed注解在拒绝未认证用户方面表现不错,但这也是它们所能做到的所有事情了。有时候,安全性约束不仅仅涉及用户是否有权限。

Spring Security 3.0引入了几个新注解,它们使用SpEL能够在方法调用上实现更有意思的安全性约束。这些新的注解在表14.1中进行了描述。

这些注解的值参数中都可以接受一个SpEL表达式。表达式可以是任意合法的SpEL表达式,可能会包含表9.5所列的Spring Security对SpEL的扩展。如果表达式的计算结果为true,那么安全规则通过,否则就会失败。安全规则通过或失败的结果会因为所使用注解的差异而有所不同。

表14.1 Spring Security 3.0提供了4个新的注解,可以使用SpEL表达式来保护方法调用

注  解

描  述

@PreAuthorize

在方法调用之前,基于表达式的计算结果来限制对方法的访问

@PostAuthorize

允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常

@PostFilter

允许方法调用,但必须按照表达式来过滤方法的结果

@PreFilter

允许方法调用,但必须在进入方法之前过滤输入值

稍后,我们将会看到每个注解的例子。但首先,我们需要将@EnableGlobalMethod-Security注解的prePostEnabled属性设置为true,从而启用它们:

现在,方法调用前后的注解都已经启用了,我们可以使用它们了。我们首先看一下如何使用@PreAuthorize和@PostAuthorize注解限制对方法的调用。

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

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

发布评论

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