Skip to content

🔥🔥🔥Mall4j 2.0 发布拉~

Compare
Choose a tag to compare
@gz-yami gz-yami released this 13 Apr 10:03
· 186 commits to master since this release

Mall4j-2.0 重写授权逻辑

Mall4j开源登录重构啦!

此次开源登录重构更新了不少内容,详情如下:

  1. 去除Spring OAuth2使用自研的Token代替授权

    去除spring-security-oauth2相关依赖,自己写TokenStore来对Token进行管理,包括存储token并返回,刷新token,清除token,校验token等方法

  2. 使用Controller代替Filter进行登录授权

    移除原本LoginAuthenticationFilter之类的登录过滤,使用AdminLoginControllerLoginController进行登录授权

  3. 保留Spring Security作为Web防火墙,不使用security的认证授权登录

    使用MallWebSecurityConfigurerAdapter来实现防火墙功能

  4. 将Token相关逻辑重新抽取,阅读起来简单易懂
    1. yami-shop-security模块拆分成三大块,分别为admin,api,common模块
    2. 移除原com.yami.shop.security.exception下的异常,使用YamiShopBindException进行统一处理
    3. 统一了SecurityUtils中获取普通用户和平台用户信息的代码
    4. 移除原yami-shop-api模块下com.yami.shop.api.security的代码,同时移除原yami-shop-admin模块下com.yami.shop.admin.security的代码
  5. 前端登录加密
    1. 前端使用密钥对时间戳+密码组成的字符串进行ASE加密
    2. 后台在com.yami.shop.security.common.manager.PasswordManagerdecryptPassword方法对前端传过来的密码进行解密
  6. 后台登录验证码更新
    1. 引入captcha做验证码功能

      <dependency>
          <groupId>com.anji-plus</groupId>
          <artifactId>captcha</artifactId>
          <version>1.3.0</version>
      </dependency>
    2. yami-shop-security/yami-shop-security-common/src/main/resources/captcha新增资源文件

    3. 使用CaptchaConfig存储底图到redis中,CaptchaCacheServiceRedisImpl适配验证码在redis中的储存

  7. 使用Kryo序列化替代原本的Fst序列化

    为了兼容token和验证码相关序列化逻辑,此番Mall4j使用Kryo替代了原本的fst

    1. kryo版本:4.0.2
    2. 移除原本的com.yami.shop.common.serializer.redis.FstRedisSerializer,新增了com.yami.shop.common.serializer.redis.KryoRedisSerializer做redis序列化
  8. 更新了版本依赖
    1. spring-boot:2.3.12.RELEASE

    2. 升级了一系列第三方依赖库

      • hutool:5.7.15

      • swagger-bootstrap:1.9.6

      • redisson:3.12.5

        • 由于redisson版本提升,相关配置文件也相对应更新了,删除了原本singleServerConfigpingTimeoutreconnectionTimeoutfailedAttempts这三个配置

        • 序列化由原本的

          codec:
            class: com.yami.shop.common.serializer.redisson.FstCodec

          修改为

          codec:
            class: org.redisson.codec.KryoCodec
    3. 新增了版本依赖

      • transmittable-thread-local:2.12.1