我使用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,因此,如果有更好的方法,我将不胜感激。
答案 0 :(得分:0)
不确定,但是我认为您没有以这种方式使用正确的auth guard
驱动程序,因此应保护token
,请检查config文件夹中的auth.php
文件,并在{ {1}}数组
guards
使用 'api' => [
'driver' => 'token',
'provider' => 'users',
]
和Auth::guard('api')->user()
检查并设置此防护的身份验证