最近我遇到了这个问题。假设我想为 Controller 中的不同方法授予不同的授权。我想使用随请求发送的 cookie 来执行此操作,并且为此我想使用注释。我试图弄清楚如何强制 @PreAuthorize 注释起作用,但我在这里遗漏了一些东西。
有谁知道这是否是可能的情况(伪代码)
@Controller
class myController
{
@SomeAuthorizationAnnotation
@RequestMapping("/")
void doSth()
{
//something is done after authorization
}
}
现在我想编写我的自定义方法,该方法允许我访问发送到此 Controller 的http请求,我可以在其中编写类似的内容
HttpServletRequest ht = ....
Optional<Cookie> cookie = getCookie(ht.getCookies(), AUTH_TOKEN);
if (cookie.isPresent()) {
//grant authorization for the method call
}
我希望这是可以理解的。
P.S 我不想将过滤器或某物绑定(bind)到 url,我想将其绑定(bind)到方法。
最佳答案
为了保护您的方法,您可以使用 @Secured 或 @PreAuthorize 注释,但您也应该声明它 <global-method-security secured-annotations="enabled" />
另请参阅method security
关于java - 在 Spring 中调用 Controller 方法之前基于 Cookie 的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661468/