关于微信授权网页的 API 开发,如何 auth 只校验 openid 不用校验 password?

目前想用jwt的方式来实现前后端分离,
需求:点击授权后就已经算是登录了,信息采用微信的信息
遇到几个问题:

  • auth认证 需要一个字段 和 password的字段来校验 ,而我只需要校验openid,我不知道在哪里设置可以只检验openid 生成jwt
  • auth必须要使用user么 比如我有一个模型test 怎么可以用认证系统(在config设置)
  • Route [login] not defined. 有个这个报错但我不知道是哪里的问题 (重新创建了一个控制器好了,如果有知道的麻烦告诉下我是为什么)
  • 我预想的是:
    • 用户点击链接,发起授权,获取用户信息后,生成jwt返回(get)
    • 前端获取jwt,带上jwt,请求服务器获取对应的信息(post)

不知道这样的这样逻辑对不对?

嘉宝君
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

用户点击链接,发起授权,获取用户信息后,生成jwt返回(get)
前端获取jwt,带上jwt,请求服务器获取对应的信息(post)
可以这样子

6年前 评论
嘉宝君

@xmasdong 嗯嗯 谢谢
请问下对于JWT不校验password 有了解吗

6年前 评论

@Torankusu 不校验password的话,可以自己写一个auth方法。
前端发起微信授权后,会获取到一个code,把这个code传到你后端接口后,通过微信的接口再去拿openid,使用拿到的openid去user表查询是否有个openid的数据,然后再给前端返回一个带有该openid信息的jwt就可以了。例如这样子


public function login(Request $request)
    {
        $code = $request->get('code');
        $data = self::exchangeData($code);//  通过code换取授权信息,具体实现查看微信开发文档
        if ($data->getStatusCode() == 200) {
            $response = json_decode($data->getBody()->getContents(), true);
            if (isset($response['openid'])) {
                return ['data' => LoginHelper::createdToken($response)];//  自定义生成jwt的方法 这里返回包含有授权信息的jwt
            }
        }
        return ['data'=>$data->getBody()->getContents()];
    }
6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!