2014-10-30 56 views
1

最近我遇到了这个问题。假设我想对控制器中的不同方法授予不同的授权。我想要使​​用与请求一起发送的cookie来做到这一点,并且我希望使用注释。我试图找出如何强制@PreAuthorize注释工作,但我在这里错过了一些东西。在春季调用控制器方法之前基于Cookie的授权

有谁知道,如果有可能的场景(伪代码)

@Controller 
class myController 
{ 
    @SomeAuthorizationAnnotation 
    @RequestMapping("/") 
    void doSth() 
    { 
     //something is done after authorization 
    } 
} 

,现在我想写将授予我访问HTTP请求发送到该控制器我自定义的方法,在那里我可以让我们说写一些像

HttpServletRequest ht = .... 

Optional<Cookie> cookie = getCookie(ht.getCookies(), AUTH_TOKEN); 
if (cookie.isPresent()) { 
    //grant authorization for the method call 
} 

我希望这是有点可以理解的。

P.S我不想绑定过滤器或网址的东西,我想绑定到方法。

回答

1

在办法,以确保你的方法,你可以使用@Secured或@PreAuthorize注释也是你应该把它声明<global-method-security secured-annotations="enabled" /> 又见method security

+0

请告诉我。在你的情况下,如果我通过web服务器发送请求,我会得到异常。为什么? – makson 2017-03-16 18:52:23

1

好吧,我解决这个问题是通过简单地使用Spring Security的内身份验证提供并根据这个项目实现UserDetailsS​​ervice的接口来满足我的需求。那么我的会话将自动处理,而无需自己处理Cookie。当然,注释工作。