Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC、DI和AOP功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
Spring Security 是一个当今非常流行的安全框架。
环境
Spring Boot2.3.0.RELEASE
Spring Security5.3.2
IntelliJ IDEA 2020.1 x64
内存用户认证与授权
首先创建一个 SpringBoot 项目,引入 Spring Security 的依赖,在没有写 Spring Security 的相关配置时,启动项目。访问自己写的一个页面,会发现也是需要进行登录的,虽然自己并没有用户密码的验证,这时 Spring Security 默认提供了一个 user 账号,密码在启动时随机生成,登录之后才能访问到自己写的页面。
1)引入 Spring Security 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2)写一些 html 页面(如:主页、自定义登录页、其他一些功能页)
3)Controller 处理请求
@Controller
public class MainController {
@RequestMapping("/index")
public String index(){
return "index";
}
@RequestMapping("/login")
public String mainPage(){
System.out.println("/login....");
return "normal/success";
}
@RequestMapping("/fail")
public String failPage(){
return "fail";
}
@RequestMapping("/add")
public String addPage(){
return "normal/resadd";
}
....
}
4)配置认证与授权规则
@Configuration
@EnableWebSecurity
public class SpringsecurityConfig extends WebSecurityConfigurerAdapter {
//@Autowired
//private SysUserService userService;
//配置加密
//@Bean //这里注释掉不启用加密
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); //spring security 内置加密算法
}
//认证用户的来源
public void configure(AuthenticationManagerBuilder auth) throws Exception {
//auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
//下面定义了两个内存用户
auth.inMemoryAuthentication().withUser("xiao")
.password(