JAVA SpringBoot微信小程序登录

JAVA SpringBoot微信小程序登录

前言

微信小程序同时集成了APP store的功能,特别是对于传统企业来说APP的开成本较高,而且使用频率也比较低,就算有下载使用但是卸载频率也比较高,而且小程序的出台正好可以弥补这样的缺点.

登录逻辑

用户凭证可以使用jwt,openId可以作为用户唯一标识,这样后端可以通过openId判断是否新用户,具体登录流程如下:
1.小程序调用wx.login() 获取jscode
2.调用后端登录的接口,将jscode作为参数传给后端
3.后端通过jscode及对应的小程序ID,小程序密钥调用微信后端登录接口换取openId
4.后端通过openId查询对应数据据,如果查询到用户数据则返回登录流程,反之,则走注册流程,新增一条客户数据完成后再返回用户数据.

控制层代码

@Data
@ApiModel(value = "客户登录信息", description = "")
public class ConsumerLoginRequest {

    /** 微信js_code */
    @ApiModelProperty(value = "微信js_code",notes = "")
    @NotBlank(message = "jsCode:jsCode不能穿空")
    private String jsCode;

}
 /**
     * consumerLogin:客户登录
     * @param baseRequest:
     * @return BaseResponse
     **/
    @ApiOperation(value = "客户登录")
    @PostMapping(value = "/consumerLogin")
    @ResponseBody
    public BaseResponse consumerLogin(@RequestBody ConsumerLoginRequest baseRequest) {
        try {
            return  loginService.consumerLogin(baseRequest);
        } catch (Exception e) {
            throw new BusinessException(e.getMessage());
        }
    }

ServiceImpl代码(微信appId,对应的密钥,后端调用微信官方登录接口在yml中进行配置)


    @Value("${wechat.secret}")
    private String secret;

    @Value("${wechat.appid}")
    private String appid;

    @Value("${wechat.url}")
    private String url;

    private static final Integer WECHATSTATUS = 0;

    @Override
    @Transactional
    public BaseResponse consumerLogin(ConsumerLoginRequest baseRequest) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("appid", appid);
        jsonObject.put("secret", secret);
        jsonObject.put("js_code", baseRequest.getJsCode());
        jsonObject.put("grant_type", "authorization_code");
        String response = HttpUtils.doGet(url, jsonObject, null);
        JSONObject responseJson = JSONObject.parseObject(response);
        int errcode = responseJson.getIntValue("errcode");
        String openId = null;
        if(WECHATSTATUS==errcode){
           openId = responseJson.getString("openid");
        }else{
            String errmsg = responseJson.getString("errmsg");
            throw new BusinessException(errmsg);
        }
		QueryWrapper<Consumer> queryWrapper = new QueryWrapper<>();
        LambdaQueryWrapper<Consumer> lambda = queryWrapper.lambda();
        lambda.eq(Consumer::getOpenId,openId);
        lambda.eq(Consumer::getStatus,GlobalConst.DataStatus.ACTIVE.getStatus());
        Consumer consumer = getOne(queryWrapper);
        if(consumer == null){
            //把用户信息存储在对应表中
        }
        BaseResponse baseResponse = BaseResponse.getSuccess();
        ConsumerLoginResponse loginResponse = new ConsumerLoginResponse();
        String token = jwtUtils.createUserToken(consumer.getId(), consumer.getName(), GlobalConst.PermissionCode.CONSUMER.getCode());
        loginResponse.setToken(token);
        JSONObject loginJson = new JSONObject();
        loginJson.put("consumerId", consumer.getId());
        loginJson.put("openId", consumer.getOpenId());
        loginResponse.setConsumerInfo(loginJson);
        baseResponse.setData(loginResponse);
        return baseResponse;
    }

小结

openId在每一个微信小程序中都是唯一的,所以可以直接使用它作为是否同一用户的标识.

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SpringBoot是一种流行的后端框架,可以用来构建微信小程序后端服务。通过Java SpringBoot,我们可以实现微信小程序的增删改查功能。 首先,我们可以利用SpringBoot提供的RESTful API来实现数据的增删改查操作。通过编写对应的Controller来处理微信小程序发送的请求,比如增加数据的请求可以由POST方法处理,删除数据的请求可以由DELETE方法处理,更新数据的请求可以由PUT方法处理,查询数据的请求可以由GET方法处理。 其次,我们需要结合微信小程序的开放能力,利用微信提供的API来实现用户登录和数据交互。通过微信小程序的API,我们可以实现用户登录获取用户的唯一标识openid,然后在后端实现对用户数据的操作。 另外,我们可以使用Spring Data JPA来简化对数据库的操作。Spring Data JPA提供了很多便利的方法来实现对数据库的增删改查操作,可以大大简化我们的代码开发。 最后,我们需要部署这个SpringBoot应用到服务器上,并且配置好数据库等相关环境。可以选择使用云服务商提供的PaaS服务,比如阿里云、腾讯云等,来快速部署我们的应用。 通过以上步骤,我们就可以实现一个使用Java SpringBoot后端服务,用于支持微信小程序的增删改查功能。这样用户就可以通过微信小程序与我们的后端服务进行数据交互,实现各种功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值