我試圖在類型級別上使用@PreAuthorize
註釋來保護控制器,並嘗試通過使用不同的@PreAuthorize
註釋某些方法來覆蓋該行爲。然而,問題在於Spring首先評估方法註釋(授予訪問權限),然後評估類別註釋(拒絕訪問)。Spring Security的類型級@PreAuthorize不能在方法級別上覆蓋
有什麼方法可以顛倒這個順序嗎?我還沒弄明白。
編輯:
在方法層面上,我要授予訪問權限,只非註冊用戶:
@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String renderCreateEntity(ModelMap model) {
return userService.renderCreateEntity(model);
}
然而,對於這個控制器的標準,應該是隻允許充分驗證的用戶:
@Controller
@RequestMapping(value = "/user")
@PreAuthorize("isFullyAuthenticated()")
public class UserController { [...] }
當調試步進通過應用程序,我看到isAnonymous()
首先計算,然後isFullyAuthenticated()
從而導致在授予訪問權限並立即拒絕訪問權限。
您使用的是哪個版本的Spring Security? – beny23
一切春天是3.0.5.RELEASE – chzbrgla