• SpringBoot - 简单集成 SpringSecurity



    活动地址:CSDN21天学习挑战赛

    概述

    SpringSecurity - 初识 SpringSecurity 这篇文章中,我们初步认识了 SpringSecurity,并且遗留了几个问题,我们知道 SpringBoot 的最大的特性就是 约定大于配置SpringBoot 底层为我们做了大量的封装,集成的每一个 Starter 框架都提供了默认配置,并且提供了可配置项,接下来我们就利用 SpringBoot 为我们提供的可配置项来自定义我们的 SpringSecurity

    自定义用户

    SpringSecurity - 初识 SpringSecurity 这篇文章中,我们知道 SpringSecurity 默认会给我们生成一个用户:user,这里我们可以在 SpringBoot 的配置类中自定义默认用户:

    spring:
      security:
        user:
          name: admin
          password: 123456
          roles:
            - user
            - sales
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    以上配置就会代替默认的用户 user用户名密码角色 都可以定义

    自定义配置类

    SpringSecurity 官方文档 给出了 SpringBoot 集成 SpringSecurity最简配置

    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    	// @formatter:off
    	@Override
    	protected void configure(HttpSecurity http) throws Exception {
    		http
    				.authorizeRequests(authorize -> authorize
    					.antMatchers("/css/**", "/index").permitAll()
    					.antMatchers("/user/**").hasRole("USER")
    				)
    				.formLogin(formLogin -> formLogin
    					.loginPage("/login")
    					.failureUrl("/login-error")
    				);
    	}
    	// @formatter:on
    
    	@Bean
    	@Override
    	public UserDetailsService userDetailsService() {
    		UserDetails userDetails = User.withDefaultPasswordEncoder()
    				.username("user")
    				.password("password")
    				.roles("USER")
    				.build();
    		return new InMemoryUserDetailsManager(userDetails);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    以上配置我们暂时不需要理解是什么意思,也不需要理解为什么要这么配置,因为我们还不具备自定义配置的能力,比如上面配置中出现的 @EnableWebSecurity 注解、WebSecurityConfigurerAdapterHttpSecurityUserDetailsServiceUserDetails 等概念我们还不理解,所以我们至少要先弄懂这里出现的几个概念,在之后的文章中我们一点点来阅读 SpringSecurity 的源码,从而达到自定义配置,实现我们个性化需求的目的。

    总结

    以上我们利用了 SpringBoot 为我们提供的配置项自定义了 SpringSecurity,但是这些都只是 SpringSecurity 的简单应用,SpringSecurity 能做的远远不止于此,比如我们常见的 对接现有用户数据库实现认证授权,因为我们不可能每次都遇到新项目,有可能我们接手的是以前的老项目,需要使用 Security 来改造升级,所以我们要对 Security 有一个全面的了解,才能使用起来得心应手。

    接下来我们就在 SpringSecurity 学习 专栏中进一步探讨 SpringSecurity

    下篇文章: SpringSecurity - 启动流程分析(一)

  • 相关阅读:
    测开笔试笔记(1)
    Qt 的d指针
    算法小讲堂之关键路径
    电子制造行业的数字化转型突破点在哪?精益制造是关键
    Leetcode(146)——LRU 缓存
    ijkplayer源码分析 —— 事件消息设计
    与堆和堆排序相关的问题
    设计模式之--原型模式(深浅拷贝)
    网络工具Netwox和Wireshark详解
    01背包问题
  • 原文地址:https://blog.csdn.net/qiaohao0206/article/details/126110749