wechat:
appid: wx52ad***696413***
secret: 32dc***510***34e***9f8***72d5***
实体类
/**
* C端用户登录
*/
@Data
public class UserLoginDTO implements Serializable {
private String code;
}
server层判断用户是否注册
public User login(UserLoginDTO userLoginDTO) {
// 获取Openid
String openid = getOpenid(userLoginDTO.getCode());
// 查询用户表
User user = userMapper.getByOpenid(openid);
// 判断是否为新用户,自动完成注册。
if (user == null) {
user = User.builder().openid(openid).createTime(LocalDateTime.now()).build();
userMapper.insert(user);
}
// 返回用户数据
return user;
}
拿到登录的用户信息后,生成用户token返回给前端
@PostMapping("/login")
@ApiOperation("微信登录")
public Result<UserLoginVO> login(@RequestBody UserLoginDTO userLoginDTO) {
log.info("微信用户登录:{}", userLoginDTO.getCode());
// wx登录
User user = userService.login(userLoginDTO);
// 为微信生成JWT令牌
Map<String, Object> claims = new HashMap<>();
claims.put(JwtClaimsConstant.USER_ID, user.getId());
String jwt = JwtUtil.createJWT(jwtProperties.getUserSecretKey(), jwtProperties.getUserTtl(), claims);
UserLoginVO userLoginVO = UserLoginVO
.builder()
.id(user.getId())
.openid(user.getOpenid())
.token(jwt)
.build();
return Result.success(userLoginVO);
}
- THE END -
最后修改:2024年4月27日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.forest88.top/2024/04/27/%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e7%99%bb%e5%bd%95/
共有 0 条评论