Security框架认证流程
同步请求和异步请求
- 同步:指单线程依次做几件事
- 异步:指多线程同时做几件事
- 同步请求:指客户端只有一个主线程,主线程既要负责页面渲染\监听用户操作,还需要负责发请求,当
- 主线程发请求时,会将页面内容清空,直到服务器响应了数据之后再将响应的数据展示到页面中, 这种
- 页面整体改变称为页面整体刷新, 同步请求是无法实现页面的局部刷新的.
- 异步请求: 指客户端浏览器主线程只负责页面渲染\监听用户操作,由子线程负责发出请求,当子线程
- 请求到数据后,可以将数据展示到原页面中, 这就是页面的局部刷新.
客户端和服务器之间数据交互过程
Security框架认证流程:
- 1. 在pom.xml里面添加Security框架的依赖, 然后刷新Maven, 此时工程访问任何资源都会转到Security框架自带的登录页面
-
<!-- Spring Boot支持Spring Security的依赖项,用于处理认证与授权 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
-
2. 创建Security框架的配置类,重写configure方法并删除掉调用父类方法的代码, 在里面配置了自己的登录页面,设置白名单,关闭跨域攻击防御
-
@Slf4j @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { //super.configure(http); //配置自己的登录页面 当判断没有登录的时候 自动跳转到自己的登录页面 http.formLogin().loginPage("/login.html"); //配置白名单(无需登录也可以访问的资源) String[] urls = {"/reg.html","/login.html","/reg","/login"}; http.authorizeRequests() .mvcMatchers(urls)//匹配某些路径 .permitAll() //直接放行(不需要登录可以访问) .anyRequest()//其它请求 .authenticated(); //需要登录认证才能访问 //关闭默认开启的跨域攻击防御 http.csrf().disable(); } }
-
3. 创建了UserDetailServiceImpl.java这是UserDetailService接口的实现类, 在里面实现了loadUserByUsername方法, 此方法是当开启Security框架的认证时自动调用的方法, 此方法里面如果return出的是一个null代表用户输入的用户名是不存在的, 如果想要出的是一个UserDetails对象代表用户名存在,密码是否正确由框架内部的代码进行判断.
-
@Override //此方法的username代表用户输入的用户名 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //此方法当Security框架进行登录认证时,自动调用 //当此方法响应null时 代表用户名不存在, 下面模拟用户输入的用户名是没问题的 //假设tom和123456是从数据库里面查询出来的数据 if (username.equals("tom")){ UserDetails userDetails = User.builder() .username("tom").password("123456") .disabled(false)//账号是否禁用 .accountLocked(false)//账号是否锁定 .accountExpired(false)//账号是否过期 .credentialsExpired(false)//登录凭证是否过期 .authorities("权限名") //授予当前登录的用户的权限 .build(); return userDetails; } return null;//代表用户名不存在 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!