SpringBoot使用SpringSecurity

2021-07-07  本文已影响0人  Kylin824

目的:验证请求用户的身份,提供安全访问
优势:基于Spring,配置方便,减少大量代码

一、SpringBoot中应用Spring Security

  1. 在SpringBoot项目的pom中配置Spring Security:
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 启动项目:
    控制台会输出一个由SpringSecurity自动生成的密码(用户名默认为 user ):
  2. 访问任一项目路径会弹出用户验证界面:

    填入用户名和密码,验证成功。

由此可见SpringBoot已经为用户采用默认配置,只需要引入pom依赖就能快速启动Spring Security。
然而默认配置每次都启动项目都会重新生成密码,同时用户名和拦截请求也不能自定义,在实际应用中往往需要自定义配置,因此接下来对Spring Security进行自定义配置。

二、SpringBoot中配置Spring Security

目标:配置两个用户角色(Admin和User),设置不同密码(存储在内存中);同时设置角色访问权限,其中Admin可以访问所有路径(即/*),User只能访问/user下的所有路径。

  1. 自定义配置类,实现WebSecurityConfigurerAdapter接口,WebSecurityConfigurerAdapter接口中有两个用到的 configure()方法,其中一个配置用户身份,另一个配置用户权限:
    1.1 配置用户身份的configure()方法:


    注释:
    • inMemoryAuthentication()表示将用户名和密码存在内存中,也可以存在数据库或redis等缓存中
    • passwordEncoder用于对密码进行加密
    • roles是给予该用户的后台角色,用于下面的用户权限配置。
    1.2 配置用户权限的configure()方法:

    注释:

    • antMatchers()配置拦截的路径
    • hasAnyRole()配置哪类角色可以访问该路径
    • formLogin()配置登录界面,可以添加自定义界面, 没添加则用系统默认的界面。

再次启动项目便可实现两个用户名(admin,user)登录,同时两类用户(Admin,User)有不同访问权限的效果。

上一篇下一篇

猜你喜欢

热点阅读