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

以上配置就会代替默认的用户 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);
	}
}

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

总结

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

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

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

你可能感兴趣的:(#,SpringSecurity,学习,spring,boot,java,spring,SpringSecurity)