在上一次我们实现了登录拦截,以及加密密码进行登录,这次我们要加上角色认证以及把加密后的账号密码放到数据库里进行查询然后登录,最后会有一个退出,退出之后就需要再次输入账号密码
角色认证
我们先在我们的config上面配置好我们的登录之后以及错误之后要去哪里,以及我们自己配置的一个路径的角色
我们的角色设置后之后就要去servise层里设置我们都有哪些权限
我们需要new一个list,然后把我们设置的角色放到list里面,注意:前面config里面/a367的admin1和admin这两个角色如果跟我们设置的这些都不一样,并且运行了/a365这个路径,那么就会进入到一个403页面,在config里我们也设置了如果403之后要跳转的一个页面,也就是/a365这个路径没有权限,所以不能访问
以下是我们的自己的403页面
数据库查询账号密码
在上章的security里我们是自己设置的一个账号密码,这次我们要放在数据库里,然后查询到后才可以登录成功
我们使用了这个UserDetailsServise
还是一个我们的密码编译器,但这次不一样的是,我们把账号密码写在了servise层里
开始配置我们的数据库和mybatis
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 连接数据源-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
还有我们的yml文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/2023325?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
配置好这些就可以写我们的mapper,然后在刚刚的servise层调用就可以
退出
不退出我们登录成功之后是可以访问其他的路径并不会被拦截登录,如果退出之后,我们需要重新进行登录,所以我们需要写一个退出
在我们登录成功的页面写一个退出的超链接,路径为logout
进入到我们的config里面写上logout的配置,也就是退出登录,还有退出之后去的路径
最后我们启动项目
随便访问一个页面都会进入我们的登录页面,现在我们访问我们登录成功的一个欢迎页面
能看到我们的退出也在,现在我们在访问别的页面就不需要在进行登录了,也不会拦截了,但是如果我们代码里面设置的角色没有,也就是没有授权就会进入到403页面,在config里面我们也设置好了403页面,进入我们自己写的一个403
标签:登录,数据库,SpringSecurity,403,退出,我们,账号密码,页面 From: https://blog.csdn.net/Cao_XinYang/article/details/139405168