使用mongodb时如何对API进行Laravel身份验证?

时间:2018-07-31 13:27:46

标签: laravel vue.js laravel-5.2

我使用Laravel,Vue.js和MongoDB创建了一个Web应用,我以此方式登录,

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use App\User;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $this->validate($request, [
           'email' => 'required|email',
           'password' => 'required|between:6,25'
        ]);

        $user = User::where('email', $request->email)
             ->first();

        if($user && Hash::check($request->password, $user->password)) {
             // generate new api token
             $user->api_token = str_random(60);
             $user->save();

             Auth::login($user, $remember = true);

             return response()
             ->json([
                'authenticated' => true,
                'api_token' => $user->api_token,
                'user_id' => $user->_id,
                'name' => $user->name
             ]);
    }

    return response()
        ->json([
            'email' => ['Provided email and password does not match!']
        ], 422);
}

现在,当我尝试从其他控制器中的Auth :: user()或$ request-> user()获取经过身份验证的用户时,我得到了null。我认为我应该使用token_api从数据库中检索用户,但是我认为这并不安全。但是,我只是开始学习Laravel和Vue.js,因此,如果有更好的方法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

不确定,但是我认为您没有以这种方式使用正确的auth guard驱动程序,因此应保护token,请检查config文件夹中的auth.php文件,并在{ {1}}数组

guards

使用 'api' => [ 'driver' => 'token', 'provider' => 'users', ] Auth::guard('api')->user()检查并设置此防护的身份验证