智者不为愚者谋,勇者不为怯者死。这篇文章主要讲述#yyds干货盘点#从零学习spring security基本原理了解相关的知识,希望能为你提供帮助。
最近打算学一套安全框架,目前由于springboot、springcloud的火热,因此springsecurity是第一选择。
一、先看看基本原理
![#yyds干货盘点#从零学习spring security基本原理了解](http://img.readke.com/220602/0313432917-0.jpg)
文章图片
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基本原理了解](http://img.readke.com/220602/0313434V5-1.jpg)
文章图片
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接口。
推荐阅读
- redis二进制编译安装
- Kubernetes访问控制之RBAC
- 针对win7玩游戏发热,有何降温办法?
- Windows7笔记本硬件升级让你流畅玩网络游戏
- 谷歌浏览器设置停止第3方cookie的技巧
- DiskGenius免费版工具修好Win7笔记本硬盘乱码的办法
- Win7系统“显示器驱动程序已停止响应”的提示如何处理?
- Windows7旗舰版系统中的taskmgr.exe是啥进程
- win7系统u盘制作系统程序失败怎样回事