微信小程序登录

天才阿梓 2024-4-27 85 4/27

1、配置好appid 和 secret

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 -

天才阿梓

4月27日16:49

最后修改:2024年4月27日
6

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论