【问题标题】:how to do Laravel authentication for API when using mongodb?使用 mongodb 时如何对 API 进行 Laravel 身份验证?
【发布时间】:2019-01-07 22:03:53
【问题描述】:

我使用 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,如果有更好的方法,我将不胜感激。

【问题讨论】:

    标签: laravel vue.js laravel-5.2


    【解决方案1】:

    不确定,但我认为您没有以这种方式使用正确的身份验证 guard 驱动程序,守卫应该是 token 请检查配置文件夹中的 auth.php 文件,并在 guards 数组上设置如下

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

    使用Auth::guard('api')-&gt;user()Auth::guard('api')-&gt;login($user) 检查并设置此守卫的身份验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2013-01-05
      • 2016-05-18
      • 2018-11-16
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      相关资源
      最近更新 更多