我有一個彈簧安全ACL系統,它似乎工作正常,只是我不知道我應該如何執行權限檢查編程。
我的應用程序分爲3層(視圖,服務(業務),DAO),我想在服務層執行身份驗證。因此,對於以域對象爲參數的方法:彈簧安全許可programatic檢查
@PreAuthorize("hasPermission(#proj,'write'")
public Project updateProject(Project proj) {
.............
}
該問題通過註釋解決。
但是,對於一個沒有acl的對象作爲參數的方法,我必須以編程方式檢查用戶是否有權限。
突然想到說,我有一個對象ProjectWrapper:
public class ProjectWrapper {
private Project project;
private Something something;
// setters and getters here
}
所以現在我的服務方法收到此類型的參數:
public Project updateProject(ProjectWapper projWrapp) {
Project p = projWrapp.getProject();
// before performing any operation on project I need to know if current user has neccessary permissions on this object
// ??? how do i check that ?
}
我是否需要使用AclService來執行?就像我需要創建/更新權限時一樣,還是存在更清晰/更好的可能性?
對於deleteProject(Long id)方法,同樣的問題,首先我必須從db中獲取對象來檢查當前用戶是否具有刪除權限。