目录
前言
一、概念
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-6d894a7ae0b6This 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: adminpassword: 1234
那么刚才我们没有配置密码的时候,默认密码是怎么生成的呢,security的User类给name和password提供了默认值
private String name = "user";
private String password = UUID.randomUUID().toString();
4.自定义登陆页面
显然我们不可能使用security提供的登陆页面