![](/img/trans.png)
[英]Auth::guard('admin')->user() return always null
[英]Laravel 6 - Auth::guard('user')->user return null
我在 Laravel 中創建了一個多重身份驗證。 當我使用用戶登錄時,在登錄后方法的調試中,在 Auth::guard('user')->attempLogin ..... 我看到一個用戶,但在重定向到 HomeController 之后返回 null。
如何解決? 我是 Laravel 的初學者。
謝謝!!!
/routes/auth/user.php
Route::prefix('backoffice')->name('user.')->namespace('User')->middleware('user')->group(function () {
Auth::routes();
Route::get('home', 'HomeController@index')->name('home');
});
/routes/web.php
Route::group(['middleware' => 'web'], function() {
require 'auth/user.php';
Route::get('/', function () {
return view('welcome');
});
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('cadastro', 'CadastroController');
});
/app/Controllers/User/Auth/LoginController - @post 登錄
public function login(Request $request) {
$credentials = [
'username' => $_POST['username'],
'password' => $_POST['password']
];
Auth::guard('user')->attempt($credentials, false);
//dd('auth', Auth::guard('user'));
return redirect()->intended('/backoffice/home');
}
/app/Controllers/用戶/HomeController
public function __construct()
{
$this->middleware('user');
dd('after middleware', Auth::guard('user'), Auth::guard('user')->user());
}
public function index()
{
return view('user.home');
}
默認情況下,Laravel 不附帶 auth guard user
。 也許您打算使用web
守衛,即Auth::guard('web')
。 如果用戶已登錄,則Auth::guard()->user()
應返回已登錄的用戶 object。
此外,檢查登錄用戶的默認中間件是auth
,而不是user
。 因此,您的路線可能如下所示: Route::prefix('backoffice')->name('user.')->namespace('User')->middleware('auth')->group(function () {});
,除非您在app/Http/Kernel.php
$routeMiddleware
數組中使用別名user
定義了自定義中間件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.