最近要做一个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);

```

你可能感兴趣的:(最近要做一个spirngMVC+hibernate+shiro框架整合,特此记录一下)