明白话表明安全框架Spring Security是什么 有什么用 怎么用

[复制链接]
发表于 2025-10-23 07:53:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Spring Security是什么?

Spring Security就像你公司的“门禁体系”,专门管两件事——
你是谁(认证):每个员工进公司都要刷卡或刷脸,确认身份正当才气进。
你能去哪(授权):平凡员工只能进办公区,向导能进财政室,保洁阿姨能进堆栈——差异权限的人能去的地方不一样。
**技能表明:它是Spring官方推出的安全框架,前身叫Acegi Security,专门办理Java步调的身份验证(登录)、权限控制(谁能访问什么)、防攻击(防黑客)**等题目,相当于给步调加了一套“防盗门”。
二、Spring Security有什么用?

焦点功能

**登录认证:**支持用户名暗码、指纹、扫码、第三方登录(微信/钉钉)等方式,好比用户输错暗码3次就锁账号。
**权限管理:**控制差异用户能访问的页面或功能,好比平凡用户只能看商品,管理员能编削商品 。
**防攻击:**自动防CSRF(伪造哀求)、XSS(脚本攻击)、暴力破解等,像门禁体系能辨认假门卡。
实际场景

电商:用户登录后只能看本身的订单,管理员能看全部订单。
银行体系:利用转账必须二次验证(短信验证码)。
企业内部体系:差异部分员工只能访问本身部分的文件。
Spring Security怎么用?三步走:装门禁→定规则→发门卡

安装(装门禁)

添加依赖(类似买门禁装备):
在项目标pom.xml里加一行代码,引入Spring Security包:
  1. <dependency>  
  2.   <groupId>org.springframework.boot</groupId>  
  3.   <artifactId>spring-boot-starter-security</artifactId>  
  4. </dependency>  
复制代码
加完依赖后,全部接口默认须要登录才气访问,账号是user,暗码在控制台随机天生。
设置规则(定权限)

创建立置类(定门禁规则)
  1. @Configuration  
  2. @EnableWebSecurity  
  3. public class SecurityConfig extends WebSecurityConfigurerAdapter {  
  4.   @Override  
  5.   protected void configure(HttpSecurity http) throws Exception {  
  6.     http  
  7.       .authorizeRequests()  
  8.         .antMatchers("/home").permitAll()      // 首页所有人能看  
  9.         .antMatchers("/admin/**").hasRole("ADMIN")  // 管理员才能进后台  
  10.         .anyRequest().authenticated()          // 其他页面需登录  
  11.       .and()  
  12.       .formLogin()                             // 开启登录页  
  13.         .loginPage("/login")                   // 自定义登录页地址  
  14.         .defaultSuccessUrl("/dashboard")       // 登录后跳转  
  15.       .and()  
  16.       .logout().permitAll();                   // 允许退出登录  
  17.   }  
  18. }  
复制代码
这段代码相当于规定:谁都能进/home页面;
只有管理员能进/admin开头的页面;
其他页面必须登录才气看 。
发门卡(用户权限)

内存用户(临时测试用):
  1. @Override  
  2. protected void configure(AuthenticationManagerBuilder auth) throws Exception {  
  3.   auth.inMemoryAuthentication()  
  4.     .withUser("张三").password("{noop}123").roles("USER")  
  5.     .and()  
  6.     .withUser("李四").password("{noop}admin").roles("ADMIN");  
  7. }  
复制代码
这段代码创建两个用户:张三(暗码123,平凡用户);李四(暗码admin,管理员)。
数据库用户(正式用):
实现UserDetailsService接口,从数据库查用户信息,好比:
  1. @Service  
  2. public class MyUserService implements UserDetailsService {  
  3.   @Autowired  
  4.   private UserRepository userRepo;  // 假设用户存在数据库里  
  5.   @Override  
  6.   public UserDetails loadUserByUsername(String username) {  
  7.     User user = userRepo.findByUsername(username);  
  8.     return new org.springframework.security.core.userdetails.User(  
  9.       user.getUsername(),   
  10.       user.getPassword(),   
  11.       user.getRoles()  // 角色列表(如ROLE_ADMIN)  
  12.     );  
  13.   }  
  14. }  
复制代码
注意事项

**别关CSRF防护:**默认开启的CSRF防护能防伪造哀求攻击,除非你明白知道本身在做什么。
**暗码必须加密:**别用明文存暗码,保举用BCryptPasswordEncoder加密(好比{bcrypt}$2a101010…)。
**权限分配最小化:**平凡用户只管少给权限,制止被黑客利用后造成更大丧失。
实用场景:全部须要登录和权限控制的体系,好比电商、银行、OA体系。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表