一,簡單權限系統設計(用戶,角色,權限)web
表設計sql
用戶表:t_user 角色表:t_role 權限表:t_permission設計
關聯表code
用戶角色關聯表:t_user_role 角色權限關聯表:t_role_permisson資源
介紹:it
根據用戶查詢t_user_role的到用戶的角色(根據須要,能夠是一個和多個角色),在根據查詢出來的角色到t_role_permission中獲取對應角色的權限。io
如圖:整個權限設計class
用戶表數據sso
角色表數據權限
用戶角色關聯表數據
權限表數據
角色權限關聯表數據
全部操做以下:
SELECT * FROM t_user WHERE `username`='admin' AND `password`='admin'; SELECT * FROM t_user_role WHERE userid = 1 SELECT * FROM t_role WHERE id = 1 SELECT * FROM t_role_permission WHERE roleid = 1 SELECT * FROM t_permission WHERE id = 1 SELECT * FROM t_permission WHERE id = 2 SELECT * FROM t_permission WHERE id = 3 SELECT * FROM t_permission WHERE id = 4 ------------------------------------------------------ SELECT `id` FROM t_user WHERE `username`='趙六' AND `password`='1111'; #獲得用戶id:5 ,表示登錄成功 SELECT `roleid` FROM t_user_role WHERE `userid`=5; #獲得角色id:3 ,表示獲取到角色 SELECT `rolename` FROM t_role WHERE `id`=3; #根據角色id 3,查詢獲得角色名稱爲 「學生」 SELECT `permissionid` FROM t_role_permission WHERE `roleid`=3; #根據角色id,查詢獲得權限id;只有一個(1) SELECT * FROM t_permission WHERE `id`=1; #根據權限id 1, 查詢權限表,權限名稱 「查看」 權限標籤 「view」 --------------------------------------------------------- SELECT `id` FROM t_user WHERE `username`='張三' AND `password`='123456'; #獲得用戶id:2 ,表示登錄成功 SELECT `roleid` FROM t_user_role WHERE `userid`=2; #獲得角色id:2 ,表示獲取到角色 SELECT `rolename` FROM t_role WHERE `id`=2; #根據角色id,查詢獲得角色名稱爲 「教師」 SELECT `permissionid` FROM t_role_permission WHERE `roleid`=2; #根據角色id,查詢獲得權限id;(1,4) SELECT * FROM t_permission WHERE `id`=1; #根據權限id 1, 查詢權限表,權限名稱 「查看」 權限標籤 「view」 SELECT * FROM t_permission WHERE `id`=4; #根據權限id 4, 查詢權限表,權限名稱 「新增」 權限標籤 「add」 -------------------------------------------------------------------
這是一個簡單的常見的權限管理。
二:權限系統設計(用戶,角色,權限,資源)
這個比上面的設計略微複雜點,更適合相對複雜的系統和權限功能要求更高的系統。
首先,咱們添加資源表,
用戶和角色 以及 他們的關聯表,都和上面的同樣,咱們新增的資源和角色聯繫在一塊兒。
同時修改 角色權限關聯表爲 , 角色資源權限關聯表。
如圖:
介紹:
根據用戶查詢t_user_role的到用戶的角色(根據須要,能夠是一個和多個角色),在根據查詢出來的角色到t_role_resource_permission中獲取對應角色的資源和對應權限。
這個權限系統能夠用在web常見的系統中,
resource資源能夠爲web系統的一些模塊,如不一樣的路徑。
permission爲權限,能夠使用shiro這塊, 這樣permissionLable爲system:edit 或 user:add,user:del等這樣的shiro權限標籤