通過自定義註解控制許可權

2021-09-17 19:59:27 字數 1739 閱讀 2124

1、編寫自定義註解類 

/**

* 自定義access註解

* 若使用在類上,這個類的所有方法都進行許可權校驗,暫不支援

* 若使用在方法上,這個方法進行許可權校驗

*/@target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce access ;

/*** 備註

*/string comment();

}

2、定義列舉值

/**

* 角色列舉類

*/public enum roleenum

/*** 角色id

*/private integer roleid;

/*** 角色描述

*/private string desc;

public integer getroleid()

public void setroleid(integer roleid)

public string getdesc()

public void setdesc(string desc)

@override

public string tostring() ';

}}

3、通過面向切面程式設計進行許可權控制

/**

* 攔截使用了@access註解的業務方法

* * 根據@access的配置來確定可訪問該方法的角色

* * 以後可以以乙個uri為乙個許可權單元,可以為角色分配多個許可權單元

* * 這裡會直接根據url去查這個角色有沒有對應的許可權,有:放行,沒有:提示無許可權

* */

@component

@aspect

public class accessinterceptor

//開發環境跳過許可權控制

// return pjp.proceed();

// }

if (!userutil.isinternalrole())

//繼續執行

return pjp.proceed();

}/**

* 校驗使用者許可權

* 目前系統只需要user的角色id和roles裡的角色id一直就算通過校驗

** @param roles

*/private void verifyuserprivileges(roleenum roles) else

roleenum userrole = userprincipal.getroleenum();

list roleenumlist = arrays.aslist(roles);

if (roleenumlist.contains(userrole)) else }}

}

4、獲取使用者許可權型別

/**

* 使用者工具類

*/public class userutil

}

5、使用案例

@restcontroller

public class testaccesscontroller )

public jsonresult testaccess()

}

通過自定義註解學到的

巨集觀上先確定思路,將思路分步驟以注釋形式寫出,開始不要考慮細節,將流程編寫出來 編譯無誤,執行檢查結果是否和自己心理預期的一樣。如果不一樣,再在現有 的基礎上修改,如果是未考慮到的條件,新增if判斷條件,debug直到和自己的預期為止。技術方面,當發現自己定義的變數要適應多種資料型別,如果這個變數...

通過 aop 寫 自定義註解

target elementtype.method retention retentionpolicy.runtime public inte ce iface1 target target說明了annotation所修飾的物件範圍 annotation可被用於 packages types 類 介...

自定義註解

target elementtype.field retention retentionpolicy.runtime public inte ce setvalue以上就是乙個自定義的註解,下面來進行說明。target elementtype.field 表示支援該註解的程式元素,field就是屬性...