SpringSecurity快速入门(一)

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

image.png

简介

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。

一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。

对于一个Web应用来说,最重要的就是需要进行认证授权

认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户

授权:经过认证后判断当前用户是否有权限进行某个操作

​ 而认证和授权也是SpringSecurity作为安全框架的核心功能。

快速入门

项目准备

先搭建一个maven项目

image.png 添加项目依赖

<!-- 系统安全框架 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- JWT -->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>${jwt.auth0.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

添加启动类

扫描二维码关注公众号,回复: 14407369 查看本文章
@SpringBootApplication
public class SpringSecurityDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringSecurityDemoApplication.class, args);
    }
    
}

添加Controller

@RestController
public class HollerController {
    
    @RequestMapping("/hello")
    public String hello () {
        return "success";
    }
    
}

访问测试

在SpringBoot项目中使用SpringSecurity去访问之前的测试接口会自动跳转到一个SpringSecurity的默认登陆页面,默认用户名是user,密码会输出在控制台。

必须登陆之后才能对接口进行访问。

image.png

image.png

image.png

认证流程查看

登录校验流程图(来源网络)

image.png

SpringSecurity的校验流程

SpringSecurity的原理其实就是一个过滤器链

测试流程真正使用到的过滤器主要为这几个 UsernamePasswordAuthenticationFilter:负责处理登录页面填写了用户名密码后的登陆请求。刚才测试流程认证工作主要有它负责。

ExceptionTranslationFilter: 处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。

FilterSecurityInterceptor: 负责权限校验的过滤器。

在项目启动时可以debug查询看到整个过滤器链

image.png

认证流程步骤查看(来源网络)

image.png Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。

AuthenticationManager接口:定义了认证Authentication的方法

UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法。

UserDetails接口:提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装成UserDetails对象返回。然后将这些信息封装到Authentication对象中。

学习要一步一步来,后续完整入门流程认证鉴权继续更新

62175e232d63851638609969d4e2d6d8.jpg

猜你喜欢

转载自juejin.im/post/7124956828748185607