spring aop實現簡單的許可權控制功能

手持兩把錕金拷發表於2018-07-10

1.許可權控制流程如下


2.資料庫模型,簡單的RBAC模型


3.流程實現

1.登入功能,登入成功後將當前使用者存放session

2.在aspect類中,定義切點,在前置通知方法處,取出session中的User,對請求進行身份認證

3.身份認證後,獲取請求url,判斷許可權

 public void doVedify(){
        //1.驗證登入狀態
        User currentUser = (User) SessionUtil.getSessionAttribute("currentUser");
        if(currentUser == null){
            throw new LoginException();
        }
        //2.驗證許可權
        String url = request.getRequestURI();
        Set<Role> roles = currentUser.getRoles();
        //標記
        boolean flag = false;
        for(Role role : roles){
            Set<Privilage> privilages = role.getPrivilages();
            //資源控制,把許可權存放到session,然後前端根據許可權顯示相應的方法或模組
            SessionUtil.setSessionAttribute("privilages", privilages);
            //許可權控制
            if(!url.equals("/access/index/hello")){
                for(Privilage privilage : privilages) {
                    if (privilage.getRemark().equals(url)) { flag = true; }
                }
                if(flag == false){
                    throw new AccessException();
                }
            }
        }
    }
demo程式碼:https://gitee.com/hlx1326/access.git

相關文章