在第四章我们已经实现了对security的集成,我们已经实现了登陆到我们的系统中了,但是大家会发现我们登陆成功以后并没有显示左侧的菜单节点,本章我们将开始集成用户模块、菜单模块以及角色模块。
1、首先我们需要在sys的entity目录底下创建Tree、QueryTree和QueryRole实体,以及修改user和UserRole实体内容如下:
Tree实体:
id
id id
id
code
icon
name
parentId
treeOrder
url
state
checked
child
tree
tree
tree
tree tree
id
id
id
id id
parentId
parentId
parentId
parentId parentId
checked
checked
checked checked
child
child
child child
code
code
code code
icon
icon
icon icon
name
name
name name
treeOrder
treeOrder
treeOrder treeOrder
url
url
url url
state
state
state state
* 功能描述:实现集合根据treeOrder字段进行排序的功能
o
i o
i
QueryTree查询实体:
QueryRole查询实体:
type LIKE
name
type LIKE
roleName
name
name
name name
roleName
roleName
roleName roleName
User修改以后实体内容如下:
* 类描述:用户实体类
* @auther linzf
* @create 2018/3/30 0030
args
user
roles
userRole
userRole
userRole
userRole
rolesuserRole
user
passwordEncoder
userpasswordEncoder
userroles
user
user
outuser
id
login
password
userName
address
job
birthDate
city
district
province
streetAddress
state
type
lastLoginDate
roles
roleArray
roleArray
roleArray
roleArray roleArray
auths
roles
roleroles
role
auths role
auths
password
id
id
id id
login
login
login login
password
password password
userName
userName
userName userName
address
address
address address
job
job
job job
birthDate
birthDate
birthDate birthDate
city
city
city city
district
district
district district
province
province
province province
streetAddress
streetAddress
streetAddress streetAddress
state
state
state state
type
type
type type
lastLoginDate
lastLoginDate
lastLoginDate lastLoginDate
roles
roles
roles roles
* 功能描述:组装角色数据集合
roleArray userRoleDao
roles
roleArray
userRole
roleIdroleArray
roleId
userRole
rolesuserRoleDaoroleId
roles
UserRole修改以后实体内容如下:
* 类描述:用户角色实体类
* @auther linzf
* @create 2018/3/30 0030
id
name
roleName
treeList
treeArray
treeList
treeList
treeList treeList
treeArray
treeArray
treeArray treeArray
id
id
id id
name
name
name name
roleName
roleName
roleName roleName
treeArray
tree
trees
idtreeArray
id
tree id
treestree
trees
**
2、创建好菜单的实体、角色实体以后我们就要开始编写我们的菜单的dao层和角色的dao层。**
TreeDao数据库层操作类内容如下:
UserRoleDao数据库层操作类内容如下:
* 功能描述:根据角色ID的集合来获取所有的角色数据
roles
query
ids roles
iirolesi
idsi rolesi
queryids
mongoTemplatequery
**
3、当我们编写好我们的菜单和角色的数据库操作的dao层,首先我们要在util工具类底下创建一个菜单节点递归类NodeUtil和用户工具类UserInfo,主要是用于密码加密以及获取登陆的用户信息等,工具类代码如下:**
NodeUtil工具类内容如下:
* 类描述:
* @auther linzf
* @create 2017/9/20 0020
returnList
* 根据父节点的ID获取所有子节点
list typeId
returnList
list typeId
iterator list iterator
node iterator
node typeIdnode
list node
node
list node
returnList
returnList
list node
childList list node
list node
it childList
it
n it
listn
list n
nodechildList
returnListnode
list node
nodeList
it list
it
n it
nnode
nodeListn
nodeList
nodeList
list node
list node
UserInfo工具类内容如下:
* 功能描述:加载菜单节点的数据
userRoleService treeService
treeMap
user
userRoleList userRoleServiceuser
userRoleuserRoleList
treeuserRole
treeMaptreetreeServicetree
treeList treeMap
treeList
* 功能描述:实现对密码进行bcrypt加密
password
passwordEncoder
passwordEncoderpassword
* 功能描述:获取当前登陆的用户的信息
* 注释:强转一个null对象不会产生报错
request
securityContextImpl request
securityContextImpl
* 功能描述:获取当前登陆的用户的权限集合
* 功能描述:判断当前的用户是否包含某一个权限
* 注释:
* allMatch:Stream 中全部元素符合传入的 predicate,返回 true
* anyMatch:Stream 中只要有一个元素符合传入的 predicate,返回 true
* noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true
authority
objobjauthority
**
4、编写好我们的工具类以后我们就可以正式开始编写我们的用户、角色、菜单的service业务实现类。**
TreeService内容如下:
treeDao
treeDao
UserRoleService内容如下:
0
UserService内容如下:
1
5、编写好了我们的业务实现类service,接着我们就开始编写我们的controller控制层的实现类,UserController、TreeController、RoleController.
UserController:
2
TreeController
3
RoleController
4
到此处我们完成了这三个模块的集成工作,剩余的组织架构和数据字典模块,就请大家自己去我的github上直接下载就好了,此处就不再进行累述了。
到此为止的GitHub项目地址:https://github.com/185594-5-27/csdn/tree/master-base-5
上一篇文章地址:基于spring boot和mongodb打造一套完整的权限架构(四)【完全集成security】
QQ交流群:578746866
还没有评论,来说两句吧...