大家好。我正在开发Laravel项目,但遇到这样的问题:
我有一些api控制器,在其中一个中,我需要使用Auth :: user()创建一些逻辑。我对将用户详细信息返回给Vuejs后端不感兴趣。我只是一个可以在api contoller中使用它。
基于这三点,我认为Passport工作正常,或者与Passport无关,我不知道。但是,当我尝试在控制器中使用Auth :: user()时,它总是返回该值,就好像Auth :: user()为NULL。
我认为我正确设置了Passport,因为我通过文档做了3次。我已经尝试了所有能够找到的解决方案,但是没有一个对我有用。他们可能已经过时了。如果有人可以在这个问题上帮助我,我真的很感激。
web.php
Auth::routes();
Route::get('/home', 'BackendController@index')->name('home');
BackendController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class BackendController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
$user = Auth::user();
// $user is not NULL here. In balde view, I can console log $user.
return view('layouts.backend')->with("user", $user);
}
}
/ home是Vuejs主页。
api.php
Route::apiResources([
'please' => 'API\HelpMeController'
]);
API / HelpMeController
public function index()
{
if (Auth::user() || auth()->user() || auth()->guard('api')->user()) {
return 1;
} else {
return 0; // it returns this one.
}
}
P.S .:我没有共享太多代码,因为所有身份验证文件都与新安装的文件相同。唯一的区别是,我使用的是一个自定义的命名用户表,其中包含一些额外的字段,而不是默认的字段。