Laravel 在登錄返回Token

    接著上一篇的 密文密碼登錄接口,我們需要在用戶用戶名密碼驗(yàn)證成功的情況下,多返回一個(gè)token 的字段。

這里使用JWT來(lái)實(shí)現(xiàn)token,比較方便簡(jiǎn)單。
關(guān)于JWT的引入以及配置可以查看這篇文章,里面有Laravel接入JWT的全面方法,照做即可。

方法最后變成


 /*
     * 密碼登錄
     * */
    public  function  pwdLogin(PwdLoginRequest $pwdLoginRequest){

        $password = Crypt::decrypt($pwdLoginRequest['password'],false);

        $phone = $pwdLoginRequest['phone'];
        //此處加入了token
        if ($token = auth('api')->attempt(['phone' => $phone,'password' => $password])) {
            $user_info = Users::where('phone', $phone)->first()->toarray();
            $user_info['token'] = $token;
            return $this->success($user_info);
        }else{
            return $this->failed('用戶名或密碼錯(cuò)誤');
        }
    }

那么短信驗(yàn)證碼登錄與密碼登錄,大體邏輯相同,只是我為了使用Laravel自帶的attempt()方法 另外建立了一個(gè)驗(yàn)證模型

/*
     * 驗(yàn)證碼登錄
     * */
    public function smsLogin(CodeService $codeService,CaptchaGetRequest $request){
        $phone = $request['phone'];
        $code = $request['code'];
        
        $token = auth('sms')->attempt(['phone' => $phone,'password' => $code]);
        if ($token && $codeService->checkCode($request['phone'],$request['code'])) {
            $user_info = Users::where('phone', $request->get('phone'))->first()->toarray();
            $user_info['token'] = $token;
            return $this->success($user_info);
        }else{
            return $this->failed('驗(yàn)證碼錯(cuò)誤');
        }
    }

這里在config/auth.php下添加了一個(gè)sms的驗(yàn)證入口


    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
//            'driver' => 'token',
            'driver' => 'jwt',
            'provider' => 'users',
        ],

        'sms' => [
            'driver' => 'jwt',
            'provider' => 'userSms',
        ]
    ],
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Users::class,
        ],

        'userSms' => [
            'driver' => 'eloquent',
            'model' => App\Models\UserSms::class,
        ],

在UserSms.php內(nèi)使用getAuthPassword()方法修改驗(yàn)證字段

public function getAuthPassword() {
        return $this->capatcha_code;
    }

這樣就可以同時(shí)通過(guò)短信驗(yàn)證碼與密碼進(jìn)行登錄并且分發(fā)token了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容