[英]How to redirect to admin page with middleware auth in Laravel 5.4?
我為此苦苦掙扎了幾天,但我找不到我做錯了什么。
我創建了一個登錄表單。 路由在組中間件auth下。 當我嘗試登錄時,它表明我已登錄,但是沒有重定向到管理面板,我將返回登錄頁面。 我很確定問題出在中間件上,但是我不知道我錯了什么。
我的路線:
Route::get('/admin/login','Admin\LoginController@index')->name('login');
Route::post('/admin/loginF','Admin\LoginController@loginF');
Route::group(['middleware' => 'auth'], function()
{
Route::get('/admin','Admin\DashboardController@index')->name('dashboard');
Route::get('/admin/logout',function(){
Auth::logout();
return redirect('/admin/login/');
});
});
登錄名:LoginController類擴展了控制器{
use AuthenticatesUsers;
public function __construct() {
$this->middleware('guest')->except('logout');
}
public function Index() {
return view('admin.login');
}
public function loginF(Request $request) {
$credentials = [
'username' => $request['username'],
'password' => $request['password'],
];
if (Auth::attempt($credentials)) {
return redirect("/admin");
} else {
return Redirect::back()->withErrors("Error Login!");
}
}
}
在我的DashboardController中,
public function __construct() {
$this->middleware('auth');
}
編輯:
這是默認設置,沒有更改
class RedirectIfAuthenticated{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
我記得我的情況。 我創建了一個中間件,並在其中檢查了$ guard變量。
$this->middleware('LoggedIn:admin');
//在MyAdmin的構造函數中調用,所有其他管理頁面都通過該構造函數進行了擴展。
中間件
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check() == false) {
switch ($guard) {
case 'client':
return redirect('/Login');
break;
case 'vendor':
return redirect('/Login');
break;
case 'employee':
return redirect('/Login');
break;
case 'admin':
$output = $this->EmployeeAccess($request);
if($output['status'] == false){
return redirect($output['link']);
}
break;
default:
return redirect('/');
break;
}
}
return $next($request);
}
在登錄頁面上,您應該檢查
if($this->guard('admin')->check() === true) // then redirect to admin dashboard
對於其他用戶
if($this->guard('user')->check() === true) // then redirect to user dashboard
在您的loginF方法上:
public function login()
{
//check if auth passed, if so, redirect to dashboard
if (Auth::check()) return redirect('/dashboard');
//if failed, return view to login
return view('login');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.