#yyds干货盘点#从零学习spring security基本原理了解

智者不为愚者谋,勇者不为怯者死。这篇文章主要讲述#yyds干货盘点#从零学习spring security基本原理了解相关的知识,希望能为你提供帮助。
最近打算学一套安全框架,目前由于springboot、springcloud的火热,因此springsecurity是第一选择。
一、先看看基本原理

#yyds干货盘点#从零学习spring security基本原理了解

文章图片
spring security 实际上就是通过一系列的过滤器对请求进行过滤,最终对不合法的请求抛出相应的异常。
二、接下来看看具体实现
1)引入security的依赖
< dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter-security< /artifactId> < /dependency>

2)编写个测试用的接口
@GetMapping("/user") public String getUser()return "this is security";

3)访问看看效果
访问这个user接口的时候发现请求被拦截了,需要输入用户名和密码,spring security默认用户名是user,每次启动项目的时候会再控制台打印,输入用户名和密码后重新跳转到user接口
#yyds干货盘点#从零学习spring security基本原理了解

文章图片
4)自定义用户名和密码
在实际应用中,以上肯定是不能满足需求的,我们需要从数据库进行验证用户名和密码。
@Component @Slf4j public class MyUserDetailService implements UserDetailsService // 加密处理 @Autowired private PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException // 这一块用来处理用户合法性,如从数据库里验证用户 log.info("登录的用户名=",userName); return new User(userName,passwordEncoder.encode("123456"),true,true,true,true, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));

@Configuration public class BrowserConfig extends WebSecurityConfigurerAdapter @Bean public PasswordEncoder passwordEncoder()return new BCryptPasswordEncoder(); @Override protected void configure(HttpSecurity http) throws Exception http.formLogin()//表单提交的所有请求都进行身份认证 .and() .authorizeRequests() .anyRequest() .authenticated();

【#yyds干货盘点#从零学习spring security基本原理了解】UserDetailsService 是security封装好的处理用户认证逻辑的接口。
WebSecurityConfigurerAdapter 是拦截器,我们重写了configure方法,用来对http请求进行认证和授权。
测试一下,随便输入一个用户名,密码输入123456,然后会跳转到user接口。

    推荐阅读