用的 passport,没用 dingo API 的,不知道这样写有没有问题?

为对应用户创建 JWT

 // 为对应用户创建 JWT
        $token = Auth::guard('api')->fromUser($user);

改成下面这样返回也可以吧?

public function weappStore(WeappAuthorizationRequest $request)
    {
        $code = $request->code;

        // 根据 code 获取微信 openid 和 session_key
        $miniProgram = \EasyWeChat::miniProgram();
        $data = $miniProgram->auth->session($code);

        // 如果结果错误,说明 code 已过期或不正确,返回 401 错误
        if (isset($data['errcode'])) {
            return response()->json([
                'status'=>'false',
                'message' => 'code已过期或不正确',
            ],401);
        }

        //找到 openid 对应的用户
        $user = User::where('weapp_openid', $data['openid'])->first();
        //把session_key
        $attributes['weixin_session_key'] = $data['session_key'];

        // 未找到对应用户则需要提交用户名密码进行用户绑定
        if (!$user) {
            // 如果未提交用户名密码,403 错误提示
            $username = $request->username;

            if (!$username) {
                return response()->json([
                    'status'=>'false',
                    'message' => '用户不存在',
                ],403);
            }

            // 用户名可以是邮箱或电话
            filter_var($username, FILTER_VALIDATE_EMAIL) ? $credentials['email'] = $username : $credentials['phone'] = $username;
            $credentials['password'] = $request->password;

            // 验证用户名和密码是否正确
            if (!auth()->attempt($credentials)) {
                return response()->json([
                    'status'=>'false',
                    'message' => '用户名或密码错误',
                ],404);
            }
            // 获取对应的用户
            $user = User::where('phone', $credentials['phone'])->first();
            $attributes['weapp_openid'] = $data['openid'];
        }

        // 更新用户数据
        $user->update($attributes);

        // 为对应用户创建 JWT
        // $token = Auth::guard('api')->fromUser($user);

        // 直接创建token并设置有效期
        $createToken = $user->createToken($user->weapp_openid);

        $createToken->token->expires_at = Carbon::now()->addDays(15);
        $createToken->token->save();

        $token = $user->createToken($user->weapp_openid)->accessToken;

        return response()->json([
           'access_token'=>$token,
            'token_type'=>"Bearer",
            'expires_in' => '21600',
        ],201);

        //        return response()->respondWithToken($token)->setStatusCode(201);
    }
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
liyu001989
最佳答案

你是用的 passport 吗? https://learnku.com/courses/laravel-advanc... 应该按这种方式处理啊

5年前 评论
讨论数量: 1
liyu001989

你是用的 passport 吗? https://learnku.com/courses/laravel-advanc... 应该按这种方式处理啊

5年前 评论

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