news 2026/7/23 23:05:15

Spring Security掌握内容速忆(适用于初学者)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Security掌握内容速忆(适用于初学者)

目录

一、需要掌握的

二、详细指引

1. 配置文件

2. 查用户

3. 在 Controller 里获取当前用户

四、容易搞混的问题

五、Security 报错解决方案


Spring Security 是公司里“骨架化”程度最高的组件之一,架构组会提供一个“认证授权中心”的 Maven 骨架(archetype),我们只需要:

  1. 改数据库表名(如果要加字段)
  2. 配白名单路径(哪些接口不需要登录)
  3. 写一个实现类(告诉框架怎么从数据库查用户)

其他的,比如 JWT 生成/校验、密码加密、Session 管理、过滤器链……统统不用你管,全是现成的。


一、需要掌握的

层级

需要掌握的内容

开发必知

1. 怎么配白名单(/login/register放行)
2. 怎么实现UserDetailsService(查数据库)
3. 怎么获取当前登录用户信息

面试必问

认证流程(用户→UsernamePasswordAuthenticationToken→AuthenticationManager→UserDetailsService)

排错必看

401/403 的区别;怎么从 SecurityContext 里取用户


二、详细指引

1. 配置文件(只需要改这三行)
@Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(auth -> auth // 我们只需要在这里加白名单 .requestMatchers("/api/login", "/api/register", "/swagger-ui/**").permitAll() .anyRequest().authenticated() ); return http.build(); } }
2. 查用户(唯一要写的核心逻辑)
@Service public class MyUserDetailsService implements UserDetailsService { @Autowired private UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) { // 就写这一句:从数据库查用户 User user = userMapper.selectByUsername(username); if (user == null) { throw new UsernameNotFoundException("用户不存在"); } // 然后返回给框架,框架会自动校验密码 return new org.springframework.security.core.userdetails.User( user.getUsername(), user.getPassword(), new ArrayList<>() // 权限列表 ); } }
3. 在 Controller 里获取当前用户(直接拿)
@GetMapping("/me") public UserInfo getCurrentUser() { // 就这么拿当前登录用户,不用自己解析Token Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); return userService.findByUsername(username); }

四、容易搞混的问题

问题

答案

401 和 403 什么区别?

401 = 没登录(未认证);403 = 登录了但权限不够(已认证但无权限)

SecurityContext 里拿不到用户?

检查过滤器链是否执行了,或者是不是在/permitAll()的路径里

我怎么区分普通用户和管理员?

在 User 表里加一个role字段,然后在loadUserByUsername里把角色塞进权限列表,框架会自动拦截


五、Security 报错解决方案

先检查:

  1. /login放行了没有?(没放行就一直在登录页循环)
  2. UserDetailsService里查到的用户密码对不对?(错一个就 401)
  3. 密码加密方式一致吗?(明文和 BCrypt 别混用)

只要把这三条记牢,Spring Security 这块就算过关了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 22:52:33

华为鸿蒙免费铃声软件—小羊免费铃声

先说重点① 本机剪铃声&#xff1a;不联网、没广告、不用注册 ② 内置 8 首可直接用&#xff0c;也能导入自己的歌拖波形剪 ③ 2.0 界面更清爽&#xff0c;还能换主题配色三秒导入&#xff0c;十秒剪辑&#xff0c;一声纯粹换铃声最烦的是要会员、要联网下素材&#xff0c;剪完…

作者头像 李华
网站建设 2026/7/23 22:49:09

基于人脸识别的无人值守自习室预约系统设计与实现

1. 项目概述&#xff1a;无人值守自习室预约签到系统的核心价值在高校图书馆和共享办公空间&#xff0c;座位资源紧张与预约管理低效一直是痛点。传统人工登记方式存在代签、占座等漏洞&#xff0c;而普通预约系统又缺乏身份核验机制。我们设计的这套系统通过人脸识别技术实现&…

作者头像 李华
网站建设 2026/7/23 22:45:13

高斯泼溅技术-从入门到精通

自适应密度控制&#xff08;Adaptive Density Control&#xff09; 训练从稀疏点云初始化&#xff0c;经过几万步梯度下降&#xff0c;最终得到数百万个高斯体。这中间&#xff0c;高斯体的数量和位置是如何从初始状态演变到最终状态的&#xff1f;答案就是本文的主题——自适…

作者头像 李华
网站建设 2026/7/23 22:43:03

DeepSeek专家模式突破对话上限技巧,无缝衔接新对话!

各位有没有在使用DeepSeek中&#xff0c;尤其是专家模式深度思考&#xff0c;出现“对话已达上限”的提示&#xff1f; 这篇文章我就分享如何解决这个问题。这也是我最开始十分头疼又无法逾越的鸿沟&#xff01; 当你的DeepSeek在专家模式深度思考的情况下出现“对话已达上限”…

作者头像 李华
网站建设 2026/7/23 22:32:14

大模型分布式训练与显存优化核心技术解析

1. 大模型训练的核心挑战与解决方案全景当参数规模突破百亿量级时&#xff0c;大模型训练就像在建造一座数字化的摩天大楼——传统单机训练如同手工砌砖&#xff0c;而分布式训练则像启用现代化工程机械集群。以GPT-3为例&#xff0c;1750亿参数的体量需要超过300GB的显存空间&…

作者头像 李华