目录
前言
一、概念
1.什么是springsecurity
2.对比shiro
二、开始项目
1.建立一个空项目,建立module,引入相关依赖
2.启动项目,访问项目
3.自定义密码
总结
前言
记录一下学习springsecurity的过程
开发环境:IDEA
一、概念
1.什么是springsecurity
spring提供的安全管理框架,核心功能是认证,授权
认证:验证当前用户是不是本系统注册的用户,识别具体是哪个用户
授权:通过认证的用户,需要判断是否具有权限进行某个操作
2.对比shiro
springsecurity功能更强大,shiro更容易上手应用
二、开始项目
1.建立一个空项目,建立module,引入相关依赖
new Project->Empty Project
File->new module->Spring Initializr->Maven->选择需要加入的功能->生成项目,等待依赖导入
必须选择的包括springsecurity,springweb,注意右上角选择自己想要的springboot版本,springboot版本与jdk版本要匹配,否则可能会导致其他依赖的版本混乱
附上依赖pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.14</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springsecuritydemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springsecuritydemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.启动项目,访问项目
控制台输出如下,意思是自动生成了密码,如果你要在生产环境使用,应该修改配置
Using generated security password: 7bc86ae1-30a1-435c-bc59-6d894a7ae0b6
This generated password is for development use only. Your security configuration must be updated before running your application in production.
访问项目localhost:8080,以往我们访问本地项目,直接会进入首页,但这次弹出了一个登录页面
这是springsecurity自带的过滤器,验证当前用户没有登陆,自动跳转到登录页面
这个页面是通过网络下载的bootstrap页面,如果下载的有问题,那么页面展示效果可能会不太好,可以忽略
输入账号密码登录,默认账号为user,密码为刚刚控制台输出的
登陆后跳转到error页面,这并不是登录失败了,只是没有识别到登陆成功后应该跳转到哪
我们可以自己写一个接口访问,比如http://localhost:8080/index,页面输出hello world!
@RestController
public class IndexController {
@GetMapping("/index")
public String index() {
return "hello world!";
}
}
3.自定义密码
如果我们不想使用默认生成的密码,可以自己配置密码application.yml
spring:
security:
user:
name: admin
password: 1234
那么刚才我们没有配置密码的时候,默认密码是怎么生成的呢,security的User类给name和password提供了默认值
private String name = "user";
private String password = UUID.randomUUID().toString();
4.自定义登陆页面
显然我们不可能使用security提供的登陆页面