学习SpringSecurity+SpringBoot的一点点记录 这是(一)
啥是Spring-Security
Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。
SpringSecurity的核心功能:
- 用户认证(Authentication):系统判断用户是否能登录
- 用户授权(Authorization):系统判断用户是否有权限去做某些事情
SpringSecurity 特点:
- Spring 技术栈的组成部分,与Spring 无缝整合。
- 全面的权限控制,能提供完整可扩展的认证和授权支持保护
- 专门为 Web 开发而设计。
- 重量级,需要引入各种家族组件与依赖
SpringSecurity快速上手
首先创建一个springboot项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wyXPRmQd-1637929574232)(Untitled.assets/9450c469a32f564538b1a963fc27f55c.png)]
引入对应的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
写出一个测试用的controller
@RestController
@RequestMapping
public class TestController {
@GetMapping("hello")
public String hello(){
return "hello security";
}
}
直接启动测试一下
直接进入
localhost:8080/hello
进入页面直接是一个登录界面
发现我们没有用户名及密码
其实这个框架给了我们一个初始用户user
而密码在哪里呢,其实是在刚才启动的时候,出现的启动日志里面
password之后的就是我们的密码了
输入之后,咱们就成功的进来了
这样咱们是能够使用了
但是明显不够,我该怎么自定义这些用户呢
自定义用户
首先呢,咱们可以通过yml文件中添加用户的方式去添加
但是显然非常的局限,适合添加一个或者有限个管理员账号
- application.yml文件中添加
spring:
security:
user:
name: yang
password: 1234
- 使用配置类的方式添加
首先新建一个SecurityConfig类
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
//定义一个密码生成器
BCryptPasswordEncoder pe = new BCryptPasswordEncoder();
//对登录密码进行加密
String password = pe.encode("1122");
//通过使用身份验证器的验证
auth.inMemoryAuthentication().passwordEncoder(pe).withUser("yang").password(password).roles("admin");
}
}
这样我们再次启动项目访问
localhost:8080/hello
输入我们的用户信息
同样能够进来