目前我试图弄清楚 Spring Security 如何评估给定的 URL、表达式和注释。到目前为止,它似乎总是从头security-context.xml
开始检查条目。如果是denyAll
这样,它将简单地停止对请求的进一步处理。
也许我忘了设置一些配置选项,但是(在我看来)不可能使用 Spring Security 的注释(如 、 等)建立一个好的白@Secured
名单@PermitAll
。
我想要的基本上是注释 a 中的方法@Controller
以允许访问。例如:
@Controller
@RequestMapping("/test")
public MyController {
@RequestMapping("")
public void tryToGetSomething() {
// no security annotation -> denyAll
}
@RequestMapping("/public")
@PermitAll
public void tryToGetSomethingPublic() {
// this will always have access allowed
}
@RequestMapping("/admin")
@Secured({"ROLE_ADMIN"})
public void tryToGetSomethingReallyImportant() {
// this can only be accessed by admins
}
}
这种方法的主要原因是:安全性;-)
。在编写代码时总是有可能忘记一些注释。使用这种方法,这样的错误不会影响敏感数据的安全性。
所以我的问题是:我怎样才能做到这一点?