一、概述
Spring Security是一个安全框架,主要功能有用户认证(Authentication)和用户授权(Authorization)两个部分。
用户认证:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
用户授权:指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。就是所谓的RBAC系统。
二、快速入门
创建一个boot项目,引入一下依赖
<dependency><groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
创建一个测试访问地址
@Controllerpublic class DemController {
@RequestMapping("/index")
public void index(){
System.out.println("hello");
}
}
访问/index,浏览器地址跳转为localhost:8080/login,界面如下,这个就是security默认对所有资源保护,
在项目启动过程中,我们会看到如下一行日志
Using generated security password: d58e2224-2034-4196-b13f-f4a18bb65a13
这就是 Spring Security 为默认用户 user 生成的临时密码,是一个 UUID 字符串。
在登录页面,默认的用户名就是 user,默认的登录密码则是项目启动时控制台打印出来的密码,输入用户名密码之后,就登录成功了,登录成功后,我们就可以访问到 /index接口了。
在 Spring Security 中,默认的登录页面和登录接口,都是 /login ,只不过一个是 get 请求(登录页面),另一个是 post 请求(登录接口)。默认的密码有一个问题就是每次重启项目都会变。
问题1:默认的账户从哪来的?
问题2:只是加入了一个依赖,怎样做到全局资源认证的?
三、推荐视频和文章链接
SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权-B站最通俗易懂的Spring Security课程_哔哩哔哩_bilibili
【编程不良人】SpringSecurity 最新实战教程,更新中..._哔哩哔哩_bilibili