2014-10-30 52 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。當然,註釋工作。