通過反射實現javaweb專案中許可權的重新整理
阿新 • • 發佈:2018-12-02
記錄是為了更好的成長!
1、貼一段實際專案的中的程式碼
/** * @Methods: permissionreload * @Description: 許可權過載 * @return */ @RequestMapping("/permissionreload") public String permissionreload() { //0、從資料庫中查出所有許可權,進行對比,如果已經存在,跳過,不在新增 List<String> resouceList = permissionService.listPermissionUrls();//1、獲取Controller中所有的RequestMapping Map<RequestMappingInfo,HandlerMethod> handlerMethods = rmhm.getHandlerMethods(); Collection<HandlerMethod> values = handlerMethods.values(); for(HandlerMethod method:values) { //2、遍歷所有方法,判斷當前方法是否貼有@RequiresPermissions 許可權控制標籤RequiresPermissions anno = method.getMethodAnnotation(RequiresPermissions.class); if(anno != null) { //取得許可權表示式 String resourcesUrl = anno.value()[0]; //去除重複 if(resouceList.contains(resourcesUrl)) {continue; } //封裝物件,新增到資料庫表中 Permission p = new Permission(); p.setUrl(resourcesUrl); //設定許可權名稱 p.setPname(method.getMethodAnnotation(PermissionName.class).value()); //儲存到資料庫 permissionService.add(p); } } return "/login/login"; }
以上內容代表個人觀點,僅供參考,不喜勿噴。。。