几天来我一直在为此苦苦挣扎,但我找不到我做错了什么。
我创建了一个登录表单。路由在组中间件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);
}
}
答案 0 :(得分:0)
我记得我的情况。我创建了一个中间件,并在其中检查了$ 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
答案 1 :(得分:0)
在您的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');
}