目录
前言
一、概念
1.什么是springsecurity
2.对比shiro
二、开始项目
1.建立一个空项目,建立module,引入相关依赖
2.启动项目,访问项目
3.自定义密码
总结
记录一下学习springsecurity的过程
开发环境:IDEA
spring提供的安全管理框架,核心功能是认证,授权
认证:验证当前用户是不是本系统注册的用户,识别具体是哪个用户
授权:通过认证的用户,需要判断是否具有权限进行某个操作
springsecurity功能更强大,shiro更容易上手应用
new Project->Empty Project
File->new module->Spring Initializr->Maven->选择需要加入的功能->生成项目,等待依赖导入
必须选择的包括springsecurity,springweb,注意右上角选择自己想要的springboot版本,springboot版本与jdk版本要匹配,否则可能会导致其他依赖的版本混乱
附上依赖pom
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.14
com.example
springsecuritydemo
0.0.1-SNAPSHOT
springsecuritydemo
Demo project for Spring Boot
11
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.security
spring-security-test
test
org.springframework.boot
spring-boot-maven-plugin
控制台输出如下,意思是自动生成了密码,如果你要在生产环境使用,应该修改配置
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!";
}
}
如果我们不想使用默认生成的密码,可以自己配置密码application.yml
spring:
security:
user:
name: admin
password: 1234
那么刚才我们没有配置密码的时候,默认密码是怎么生成的呢,security的User类给name和password提供了默认值
private String name = "user";
private String password = UUID.randomUUID().toString();
显然我们不可能使用security提供的登陆页面