基于过滤拦截技术实现的身份认证方案

系统基本流程

  1. 用户发送请求
  2. 过滤器过滤掉,访问需要保持登录状态的资源但是又没有携带token的请求
  3. 拦截器拦截掉,访问需要具备相应权限的资源但是又没有对应权限的请求
  4. 进入业务逻辑

代码层级

config

MyFilterConfig:自定义过滤器的基础配置,对所有资源都进行过滤

MyInterceptorConfig:自定义拦截器的基础配置,设置所需拦截的放行的URL

controller

UserController:接口层

entity

User:用户的实体对象。目前为了简化操作,不必新建权限表,所以在用户的实体对象里存放了list<String>集合,即用户的属性里就带着用户的所有权限信息

filter:

MyFilter:自定义过滤器,这块主要是判断用户请求有没有携带token,如果没有携带token,而且还访问的是需要携带token(即保持登录)的接口,那么就过滤掉用户的这次请求。但是,有的资源是属于开放资源,即不需要用户保持登录状态,因此,在这个模块,做了白名单列表,过滤器不对白名单列表进行过滤。

interceptor

MyInterceptor:自定义拦截器,这块主要是拦截需要权限的接口,获取用户的token,并且解析出用户权限信息,拿用户权限信息和接口所需权限进行比对,失败则拒绝,成功则让请求进行接口层。

service

UserService:接口所对应的具体业务逻辑,这块目前主要是有判断用户名密码,进而生成token,返回前端。

util

JWTUtil:JWT工具类,可以用于生成JWT,解密JWT

最后修改:2022 年 03 月 20 日 01 : 01 PM
如果觉得我的文章对你有用,请随意赞赏