这算什么操作?

// if (!Auth::attempt(['mobile' => $data['mobile'], 'password' => $data['password']])) {
        //     return $this->renderError('认证错误');
        // }
        // $user = $request->user();
        $user = User::where(['mobile' => $data['mobile'], 'password' => $data['password'], 'shop_id' => $data['shop_id']])->first();
        if (is_null($user)) return $this->renderError('用户不存在');
        $tokenResult = $user->createToken('Personal Access Token');
        $token = $tokenResult->token;
        if ($data['remember_me']) {
            $token->expires_at = Carbon::now()->addWeeks();
        }
        $token->save();

看到上面这样的代码(passport认证的login()),attempt被注掉。了解到这样做的原因是为了实现相同手机号注册的不同用户认证…

?????????????????????????????????

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 16

应该使用如下 Laravel 的自带的手动认证的方法,假设某个用户你确定他登录时填写了正确的账号和密码。那么使用

 $token = auth()->login($user);

然后,这个token可以返回给前端,让前端每次请求接口时在头部带上这个token。

1年前 评论
隐德莱希 (楼主) 1年前

应该是手机号可以相同,但 shop_id 不同。以下代码是创建 token

$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
1年前 评论
隐德莱希 (楼主) 1年前

此需求下应是同一个店铺也可以用同一手机号注册不同用户,例如1314xxxxxxx这个手机号注册了A、B两个账号,然后走了attempt的代码,便只有先注册的A能认证成功....B会报错“认证错误”

1年前 评论
uniquespider 1年前

其实我好奇的是这一段是在解决什么问题

'name' => $data['password']
1年前 评论
隐德莱希 (楼主) 1年前
隐德莱希 (楼主) 1年前

attempt也支持其他参数啊,框架只是把password单独过滤出来,用于密码验证,除非你密码是明文认证的,因为框架默认是hash

if (!Auth::attempt(['mobile' => $data['mobile'], 'shop_id' => $data['shop_id'], 'password' => $data['password']])) {
    return $this->renderError('认证错误');
}
1年前 评论

明文密码?

1年前 评论
隐德莱希 (楼主) 1年前

你描述的需求和你列出来的代码,根本就不是一个东西。。

1年前 评论
隐德莱希 (楼主) 1年前
随波逐流

emmm... 感觉怪怪的。

1年前 评论
隐德莱希 (楼主) 1年前

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