SpringBoot 整合 SpringSecurity

本文详细介绍了如何在SpringBoot项目中集成SpringSecurity,包括添加依赖、配置WebSecurity、处理静态资源和免认证URL、登录验证、使用自定义UserDetailsService以及权限设置。重点在于form表单登录方式的实现和用户认证流程。
  • spring-boot 整合 spring-security

    • maven 支持

              <!-- spring security 认证授权 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      
    • 配置文件

      @EnableWebSecurity
      public class MultiHttpSecurityConfig {
      
          @Configuration
          public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
      
              // 静态资源访问的 url
              private String[] staticFileUrl = {};
              // 不用认证就可访问的 url
              private String[] permitUrl = {};
      
              @Override
              public void configure(WebSecurity web) throws Exception {
                  web.ignoring().antMatchers(staticFileUrl);
                  web.ignoring().antMatchers(permitUrl);
              }
      
              @Override
              protected void configure(HttpSecurity http) throws Exception {
                  // 访问url认证
                  http
                          .authorizeRequests()
                          .antMatchers("/admin/**").hasAuthority(String.valueOf(AuthorityName.ROLE_ADMIN))
                          .anyRequest().authenticated();
                  // 配置登陆信息
                  http
                          .formLogin().loginPage("/login")
                          .defaultSuccessUrl("/goIndex")
                          .permitAll()
                          .and();
                  // 配置退出登陆信息
                  http
                          .logout()
                          .logoutSuccessUrl("/login")
                          .invalidateHttpSession(true)
                          .deleteCookies()
                          .and();
                  http.httpBasic();
              }
          }
      }
      
    • 使用 自己数据库的 用户信息,进行对登陆的form提交的信息,进行验证。验证成功后为该用户配置相应的权限。

      @Service
      public class UserDetailsServiceImpl implements UserDetailsService {
      
          @Autowired
          private UserRepository userRepository;
      
          @Override
          public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
              User user = userRepository.findByUserName(username);
      
              if (user == null) {
                  throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
              } else {
                  return JwtUserFactory.create(user);
              }
          }
      }
      
    • 注意:

      • 需要实现该接口:
        import org.springframework.security.core.userdetails.UserDetailsService;
      • 并实现方法:UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
    • 至此,springboot 整合 springsecurity 已经完成,不过,对于权限认证,使用的是 form 表单提交登陆的方式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值