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就是屬性...