SpringSecurity鉴权简介

发布时间 2023-12-02 11:28:55作者: aguo718

前言

本博文为听课笔记,简单记录下SpringSecurity的鉴权方式及如何在整个流程中自定义个性化鉴权,以备后续学习及工程需要。

正文

一个请求进来SpringSecurity会经过一系列的过滤器(步骤为:请求=》jwtFilter=》...Filter=》FilterSecurityInterceptor)。

  • jwtFilter简介:验证用户token,通过则将其保存在SpringSecurity的上下文,保持登录状态

  • FilterSecurityInterceptor简介:SpringSecurity通过这个过滤器实现权限验证。

    具体做法

    1. 拿到request的URL=》
    2. 拿到匹配器中的资源(如白名单等)与当前request中的资源匹配=》
    3. 匹配到的话,根据URL拿到对应角色(鉴权策略)=》
    4. 鉴权(对比:当前用户的角色和URL拿到的角色,对比上,有权限,否则,无权限)

    对应源码
    doFilter():
    beforeInvocation():在该方法中进行鉴权操作
    SecurityMetadataSource:维护所有资源、角色信息,根据当前URL获取角色信息
    AffirmativeBased.decide():鉴权:上一步的角色和当前用户的角色进行对比

  • 定制过滤器:在FilterSecurityInterceptor前加自定义dynamicSecurityFilter,示意图如下: