Skip to content

Latest commit

 

History

History
82 lines (59 loc) · 2.33 KB

sparkzxl-user.md

File metadata and controls

82 lines (59 loc) · 2.33 KB

sparkzxl-user-starter

职能: 全局获取当前登录用户信息,与业务代码彻底解耦

POM

<dependencies>
    <dependency>
        <groupId>com.github.sparkzxl</groupId>
        <artifactId>sparkzxl-core</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.github.sparkzxl</groupId>
        <artifactId>sparkzxl-cache-starter</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
</dependencies>

场景

  • 在现有的业务场景,获取当前登录用户信息,在业务代码中到处可见,污染了业务代码,没有较高的代码可读性,作为有原则的业务程序员,我忍不了,所以本项目横空出世

功能

  • 在微服务中,全局获取用户信息,在各个微服务当中行走自如

优点

减少用户信息获取的频率,提高开发效率

原理

在登录过后,将当前登录信息存入缓存(redis,内存)中,通过token获取用户缓存数据,注入业务代码当中

使用方法

  1. 引入依赖
<dependency>
    <groupId>com.github.sparkzxl</groupId>
    <artifactId>sparkzxl-user-starter</artifactId>
    <version>${sparkzxl.version}</version>
</dependency>
  1. 登录用户存入缓存
    private void accessToken(String username,OAuth2AccessToken oAuth2AccessToken){
        AuthUserInfo<Long> loginUserInfo=authUserService.getAuthUserInfo(username);
        log.info("AuthUserInfo json is {}",JSONUtil.toJsonPrettyStr(loginUserInfo));
        String buildKey=KeyUtils.generateKey(BaseContextConstant.AUTH_USER,oAuth2AccessToken.getValue());
        cacheService.set(buildKey,loginUserInfo,(long)oAuth2AccessToken.getExpiresIn());
        }
  1. 在controller请求入参中加入AuthUserInfo loginUserInfo:示例如下
@PatchMapping("/role/{id}")
public void updateAuthRoleStatus(@ApiIgnore AuthUserInfo<Long> loginUserInfo){
    log.info("当前登录信息为:{}",JSONUtil.toJsonPrettyStr(loginUserInfo))
}

AuthUserInfo 泛型Long代表主键类型

公众号

学习不走弯路,关注公众号「凛冬王昭君」

wechat-sparkzxl.jpg