之前sql初始化資料中,也包含了部分選單許可權資料。
這邊我們後端先把選單的資料初始化到redis中存放,提供api供前端呼叫,
然後再調整下前端測試。
後端將使用者選單資料初始化到redis
dao模組中,先增加個常量:
public
inte***ce
redisconstant
定義個類用於返回選單資料格式的物件:
public
class
menu
初始化redis的類中,用json格式存放使用者選單:
@component
public
class
initredisdata
implements
commandlinerunner..
.}catch
(exception e)
logger.
info
("結束初始化redis資料.");
}private string changetostring
(list
sysroles)
roles = sb.
tostring()
.substring(0
, sb.
tostring()
.length()
-1);
}return roles;
}/**
* 根據使用者名稱獲取選單列表
* @param username
* @return string (json)
*/private string getusermenus
(string username)
} result = json.
tojsonstring
(menus);}
return result;
}public
void
addchildmenu
(menu parent, sysperm sysperm, list
list)}}
}
redis的倉庫提供方法供呼叫:
@repository
public
class
systeminforedis
}
service模組寫個方法供controller呼叫:
這邊我將json又轉換成list物件,比較繞。
因為controller使用@responsebody, api返回的物件會再轉成json寫入response,
直接用json賦值返回物件的話, 會再次被轉化為json, 「 會就會被轉義成 /」 。
應該有更好的方式,不用這樣在service中再轉成list物件,待研究。
@service
public
class
userservice
return menus;
}}
最後contoller:
請求***的時候已經將解析完的使用者資訊放入currentuser物件中,這邊直接使用來獲取當前發起請求的使用者。
@restcontroller
public
class
logincontroller
}
使用postman測試下,get請求帶header token訪問 localhost:8080/api/currentmenu ,
可以看到返回正確的資料了。
,,
],"icon":""
,"name"
:"系統管理"}]
}
接下來調整下前端
首先config中配置下路由:
這裡permmanage和usermanage具體功能還沒開發,先借用下./admin做顯示。
,,
,,,]
,},
關閉下選單的國際化:
該功能暫時用不上,在defaultsettings中將menu.locale設定成false
menu:
,
最後更改下發起請求:
/services/user.js
export
async
function
querycurrentmenu()
開啟前後端服務,測試一下,ok。
剩下的就是實現下系統管理和業務層面的功能了,具體實現應該就不會再寫了。
bye~
乙個架構的演化2 用ESB整合
乙個第三方,需要我們的資料 建立乙個專案組,開發乙個gateway,連線到我們系統,提供資料。又乙個第三方,需要我們主動推資料 再開發乙個gateway,將資料按客戶要求推過去。n多第三方,資料協議,格式都不同 引入esb,做協議適配,訊息路由,gateway變成資料格式轉換器。只是它是按需定製的,...
JBPM 3 1 4的J2EE應用整合初探
因為專案需要,準備引入jbpm 3.1.4,因為我們的專案是基於 spring 2 hibernate 3 struts2 的,而spring modules整合jbpm 是 3.1.4 版的,所以用了jbpm 3.1.4 高版本的設計器還不相容 myeclipse 所以採用jbpm 3.1.4還是...
用apache2部署Django應用
環境要求 ubuntu14.04及以上,python3.4及以上 檢視系統版本 cat etc issue python2可能導致importerror no module named django錯誤 檢視python版本 python version 一般ubuntu系統自帶python,在 u...