最近要做一個spirngMVC+hibernate+shiro框架整合,特此記錄一下

通過這篇文章你可以瞭解到:

1.SSH 三大框架(spring + springMVC + Hiberante) 與 shiro 安全驗證框架如何整合;

2.通過一個示例,快速理解 shiro 框架。

1. 業務需求分析

用戶 N - 角色 N - 權限 N

我們可以想象一下,在平時工作中的職務,比如:業務經理,部門主管等,他們擁有很多的權力,而一個公司中不會只有一個業務經理,也不會只有一個部門主管,如果我們要給不同的人分配職務權力時,每次都是具體的條條框框去分配,人累心也累。而如果我們事先將具體的職務權力都賦予給某個具體的職務頭銜,那麼就只需要把已經定義好的職務頭銜賦予給某個人員就可以了,擁有該職務頭銜的人,也就間接獲得了對應的職務權力,就省時省力又開心了。

這裏的人員我們可以定義爲用戶 User;將職務頭銜定義爲角色 Role;將具體的權力定義爲權限 Permission。

用戶 和 權限之間沒有直接關係,雖然在程序中也可以掛上鉤,但是不建議這樣做,這會違背數據庫的第三範式,會造成大量的冗餘數據。

2. 創建數據庫

使用 MySQL 5.5,我們首先創建一個數據庫:shiro_demo

然後在數據庫中添加剛剛業務分析需要的實體表、多對多中間關係表。





```

useshiro_demo;-- 3個實體:

用戶N - N角色N - N權限-- 2個實體中間表:用戶多對多角色,角色多對多權限-- 用戶表 tb_usercreatetabletb_user(user_idintPRIMARYKEYauto_increment,user_namevarchar(50)notnull,user_passwordvarchar(50)notnull,user_password_saltvarchar(100));-- 角色表 tb_rolecreatetabletb_role(role_idintprimarykeyauto_increment,role_namevarchar(50)notnull);-- 權限表 tb_permissioncreatetabletb_permission(permission_idintPRIMARYKEYauto_increment,permission_namevarchar(100));-- 創建 3 個實體之間的多對多關係實體-- 用戶和角色之間的多對多關係中間表 tb_user_role-- 建立這個多對多中間表目的是符合第三範式,減少不合理的冗餘createtabletb_user_role(ur_idintPRIMARYKEYauto_increment,ur_user_idint,## 關聯用戶表的外鍵ur_role_idint## 關聯角色表的外鍵);-- 角色和權限之間的多對多關係中間表 tb_role_permissioncreatetabletb_role_permission(rp_idintPRIMARYKEYauto_increment,rp_role_idint,## 關聯角色表的外鍵rp_permission_idint## 關聯權限表的外鍵);

-- 插入數據

insertintotb_user(user_name,user_password)values("zhangsan","123456");

insertintotb_role(role_name)values("admin");insertintotb_permission(permission_name)values("user:insert");

insertintotb_permission(permission_name)values("hotel:insert");-- 給用戶 zhangsan 設置 'admin' 角色insertintotb_user_role(ur_user_id,ur_role_id)values(1,1);-- 給 'admin' 角色設置 相應的權限insertintotb_role_permission(rp_role_id,rp_permission_id)values(1,1);insertintotb_role_permission(rp_role_id,rp_permission_id)values(1,2);

```

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章