Yapi-重写第三方登录

起源

Yapi作为市面上流传已久的接口文档,我将其部署在公司内网后(暴露域名用于外部访问)。但是为了避免外部人员看到内部文档,基于内部登录重写Yapi的第三方登录系统,关闭开放注册
同一域名下,登录其他系统会通用token
不想大改Yapi登录结构

了解Yapi结构

  • server端核心代码在base.js,校验登录状态方法getLoginStatus可以做手脚
|--server
   |--controller 
     |--base.js
  • 增加else的处理逻辑

再安装一个东西
npm install -save request-promise-native

const rpn = require('request-promise-native');

else {
let token = ctx.cookies.get('token');
      if (token != null) {
        let questUrl = "http://localhost:8080/checkUser?token=" + token;
        let options = {
          method: 'GET',
          uri: questUrl
        };
        let rpnbody = await rpn(options);
        if (rpnbody == null) {
          body = yapi.commons.resReturn(null, 40011, '请登录...');
        } else {
          let userIndex = rpnbody.indexOf("自定义条件")
          if (userIndex != -1) {
            //当前用户token有效
            let userInst = yapi.getInst(userModel);
            let checkRepeat = await userInst.checkRepeat(rpnbody); //然后检查是否已经存在该用户
            if (checkRepeat > 0) {
              let dbUser = await userInst.findByEmail(rpnbody);
              let _id = dbUser.get("_id");
              let username = dbUser.get("username");
              let email = dbUser.get("email");
              let passsalt = dbUser.get("passsalt")
			 //赋值
              this.$uid = _id;
              this.$auth = true;
              this.$user = dbUser;
              let dbResult = yapi.commons.fieldSelect(dbUser, [
                '_id',
                'username',
                'email',
                'up_time',
                'add_time',
                'role',
                'type',
                'study'
              ]);
              this.setLoginCookie(_id, passsalt);
              await this.handlePrivateGroup(_id, username, email);
              body = yapi.commons.resReturn(dbResult);
            } else {
              body = yapi.commons.resReturn(null, 40011, '请登录...');
            }
}

这种已经可以实现需求,利用Http请求校验身份的正确性

未完

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值