在第二章的时候我们已经在我们的配置文件中设置了文件权限放行的功能,在本章我们将讲解如何基于mongodb数据库实现security,基于上一章我们编写的代码本章我们将实现security的权限控制。
1、首先在我们的sys的entity目录底下我们新建一个UserRole、User以及QueryUser实体类,类信息如下:
* 类描述:用户角色实体类
* @auther linzf
* @create 2018/3/30 0030
id
name
roleName
id
id
id id
name
name
name name
roleName
roleName
roleName roleName
* 类描述:用户实体类
* @auther linzf
* @create 2018/3/30 0030
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
type LIKE
userName
type LIKE
login
type LIKE
job
groupId
groupId
groupId
groupId
groupIdgroupId
groupId groupId
groupId
userName
userName
userName userName
login
login
login login
job
job
job job
大家在构建实体类的时候,若我们的定义的字段类型是ObjectId类型那么大家记得set和get方法要做成如下的改造,否则将导致我们的程序在获取数据的时候报错:
groupId groupId
groupId
groupId
groupIdgroupId
groupId groupId
groupId
** **2、接着在我们的dao目录底下增加我们的UserDao数据库操作类,我们的
UserDao数据库操作类继承了我们上一章所编写的MongodbBaseDao抽象实现类,大家通过看下面的代码会发现,实际上我们并没有写多少代码,但是我们已经实现了用户的增删改查等这些通用的功能。
* 类描述:实现用户管理的dao
* @auther linzf
* @create 2018/3/30 0030
* 功能描述:根据账号来获取用户信息
login
query login
user mongoTemplatequery
user
* 功能描述:更新用户状态为可用或者不可用
user
query user
update user
mongoTemplatequeryupdate
queryUser
query queryUser
queryUserqueryUser
query queryUser
totalCount mongoTemplatequery
totalPage totalCountqueryUser
skip queryUserqueryUser
page queryUser totalPage totalCount
queryskip
queryqueryUser
data query
pagedata
page
3、开始集成我们的security,我们的spring boot的版本已经升级到了2.0版本,我们的security的版本也同步升级到了5.x版本,在5.x版本security已经废弃了好多5.x之前的东西,因此我们的security的配置也与之前的配置有了很多不同之处,比如我们的密码加密、设置放行目录和地址等,在这里就不再细说了,大家有兴趣可以直接去sprng security的官网直接了解新版本的不同之处,3.x标识的文件都是存放在config的security目录底下。
3.1、LoginSuccessHandle:实现登陆成功以后根据不同的权限控制页面的跳转,代码如下:
* 类描述:实现根据不同的权限实现登陆的时候页面的跳转
* @auther linzf
* @create 2018/04/13 0013
request response authentication
roles authentication
path request
basePath requestrequestrequestpath
roles
responsebasePath
responsebasePath
3.2、CustomUserService:主要实现自有的权限架构的用户的登陆业务逻辑的实现,代码如下:
* Created by Administrator on 2018/04/17 0004.
userDao
s
user userDaos
user
query user
update
userDaoqueryupdate
useruser
user
3.3、CustomPasswordEncoder:实现用户的密码加密,以及密码验证的功能,在security5.x版本已经弃用了之前的MD5密码加密功能,在该版本默认使用的是bcrypt加密功能进行密码的加密,若大家还是喜欢以前的密码加密功能,那就自己去实现密码的盐值加密,以及盐值的验证就可以了,此处默认使用的是bcrypt的加密方式进行密码的加密,代码如下:
* spring-security登陆的密码进行bcrypt加密传到数据库
rawPassword
passwordEncoder
passwordEncoderrawPassword
rawPassword encodedPassword
passwordEncoder
passwordEncoderrawPasswordencodedPassword
3.4、WebSecurityConfig:实现security的权限控制,以及页面放行,csrf(跨域访问)放行、iframe放行等权限的配置,代码如下:
* 实现Security的配置
prePostEnabled
* 功能描述:实现自有的用户的登陆的验证
* 功能描述:实现密码的加密和验证
* 功能描述:实现登陆成功以后页面的跳转
auth
auth
* 描述:csrf().disable()为了关闭跨域访问的限制,若不关闭则websocket无法与后台进行连接
http
http
http
http
到此为止我们已经完成了spring security的集成了,接着我们集成springmvc的页面跳转部分,在我们的config的webmvc目录底下创建WebMvcConfig配置文件,代码如下:
* 类描述:springMVC的配置
* 功能描述:配置放行的静态文件的目录
registry
registry
registry
registry
registry
registry
registry
* 重写方法描述:实现在url中输入相应的地址的时候直接跳转到某个地址
registry
registry
registry
registry
registry
registry
registry
registry
registry
registry
registry
这样我们就完成了我们的spring security的全部集成,我们可以试着将我们的项目启动起来,大家直接访问以下的地址,若可以看到以下的页面说明我们的spring security已经集成完成了,静态的文件资源大家直接去我的github下面提供的地址去下载就好了,以及导入到mongodb数据库的文件也在我的当前工程的GitHub的db文件夹里,大家自己去拿,这里就不再贴出来了【导入mongodb数据库的脚本:
./mongoexport -u order -p hyll-2.0 -d test -c user -o /home/user.dat
】。
接着大家输入账号:fjhyll和密码:123456,大家可以看到直接登陆成功画面说明我们已经完成了security的集成了。
到此为止的GitHub项目地址:https://github.com/185594-5-27/csdn/tree/master-base-4
上一篇文章地址:基于spring boot和mongodb打造一套完整的权限架构(三)【抽象实现类和swagger的实现】
下一篇文章地址:基于spring boot和mongodb打造一套完整的权限架构(五)【集成用户模块、菜单模块、角色模块】
QQ交流群:578746866
还没有评论,来说两句吧...