自定義註解實現許可權校驗實戰

2021-10-03 06:33:30 字數 2288 閱讀 4022

最近剛入職新公司。維護乙個老的系統。然後我把許可權邏輯基於aop給簡單優化了一下。之後使用註解就可以了。作為乙個自定義註解+aop的實戰記錄吧。

1、提供了乙個註解:@checkpermission

"";2、permissiontypeenum 許可權型別列舉

/**

* @author zhangjiahui01

*/public

enum permissiontypeenum

}

3、aop實現解析註解的handler

/**

* @author zhangjiahui01

*/@aspect

@component

public

class

permissionaspecthandler

if(targetparaminstance instanceof

number)if

(targetparaminstance instanceof

string)}

}}if(

!checkpermission0]

,variablevalues)

) uri:{}"0]

);throw

newnopermissionexception

("許可權不足");

}}/** * check permission main function

** @param type

* @param username

* @param params

* @return

*/private boolean checkpermission

params)

username:{},uri:{},params:{}"

,tojsonstring

(params));

// check paramter

if(null == type || stringutils.

isempty

(username)

|| stringutils.

isempty

)switch

(type)

else

case employ_pay_action:

return permissionservice.

hasstructauthority

;case only_check_path:

return permissionservice.

onlycheckpath;}

return

false;}

/** *

* @param joinpoint

* @return fieldname : value

*/public map

(joinpoint joinpoint)

}return null;

}}

4、controller的統一異常處理:

}完事,這是一種比較通用模版,完整的解決方案。許可權校驗邏輯可以按照自己系統的規則進行自定義實現。

自定義註解結合AOP實現介面許可權校驗

在編寫介面api時,基於資料安全的考慮,我們通常會在介面進行許可權校驗,有許可權的才可以查詢資料,沒有許可權我們可以丟擲異常 沒有許可權,禁止訪問 通常,我們實現是這樣的 apioperation 根據id查詢使用者資訊 public baseresponsegetdata pathvariable...

驗證註解,自定義校驗註解

session的token時間併發的session數量,集群如何管理 notblank valid bindingresult public listgetuser requestparam string username,bindingresult errors return list hiber...

Springboot自定義校驗註解

max 10 最大不能超過10 max value 10,message 資料最大不能超過10 最大不能超過10 min range min 1,max 10 範圍 1 10 length min 2,max 10 輸入的長度 最小為2,最大為10 需要建乙個註解類和關聯類 1.target ele...