这样实现用手机验证码登录(不用 ‘password’ 字段)

问题:通过下面的代码验证了短信验证码之后,通过Auth::login()登录用户。 这样是否正确?

if (!hash_equals($session_data['code'], $request->phone_verification_code)) {
            // 返回401
            throw new AuthenticationException('验证码错误');


        }else{
            $user = User::Where('mobile_phone',$request->mobile_phone)->first();
            Auth::login($user);
        }

说明:如果用 Auth::attempt()需要password字段。最后只能想到上面的这个方法。

    {
        $credentials = $request->only('mobile_phone', 'password');

        if (Auth::attempt($credentials)) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }

谢谢各位

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

guard('web') 的是这样。

Passport OAuth 也是差不多
User::find(1)->createToken('phone')

guard('api') 直接改 token

觉得不够场景,就自己定义一个 guard,继承底层的的guard(大部分情况都是够的)

关于方法,这是写 guard 的人的事情。

3年前 评论
讨论数量: 4

我在做小程序授权登录也是类似这种做法,貌似没有更优的解决方案了

3年前 评论

@荒街! 谢谢。 琢磨了2天了,最后还是只有这个方法。 看看还会有人回复这个话题不:)

3年前 评论

guard('web') 的是这样。

Passport OAuth 也是差不多
User::find(1)->createToken('phone')

guard('api') 直接改 token

觉得不够场景,就自己定义一个 guard,继承底层的的guard(大部分情况都是够的)

关于方法,这是写 guard 的人的事情。

3年前 评论

谢谢回答! 试了 guard, 感觉比我自己想的这个方法好。不过还是个“菜鸡”,passport 回头再试

3年前 评论

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