职能: 全局获取当前登录用户信息,与业务代码彻底解耦
<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获取用户缓存数据,注入业务代码当中
- 引入依赖
<dependency>
<groupId>com.github.sparkzxl</groupId>
<artifactId>sparkzxl-user-starter</artifactId>
<version>${sparkzxl.version}</version>
</dependency>
- 登录用户存入缓存
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());
}
- 在controller请求入参中加入AuthUserInfo loginUserInfo:示例如下
@PatchMapping("/role/{id}")
public void updateAuthRoleStatus(@ApiIgnore AuthUserInfo<Long> loginUserInfo){
log.info("当前登录信息为:{}",JSONUtil.toJsonPrettyStr(loginUserInfo))
}
AuthUserInfo 泛型Long代表主键类型
学习不走弯路,关注公众号「凛冬王昭君」