这样实现用手机验证码登录(不用 ‘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');
        }

谢谢各位

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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