【发布时间】:2020-08-31 20:44:03
【问题描述】:
我的 Laravel 项目中有一个管理面板。
有一个login page 和一个dashboard page。
用户成功登录后,应用程序会将用户带到仪表板页面。
但是,当我将自定义 middleware 添加到我的 route 以检查用户身份验证时,尽管我已经提供了正确的电子邮件和密码以进行登录,但应用程序始终将我带到登录页面而不是带我到 @ 987654325@.
userController.php
public function admin_login(Request $request)
{
$rules = [
'email' => 'required',
'password' => 'required'
];
$customMessages = [
'email.required' => 'Email Required',
'password.required' => 'Password Required'
];
$this->validate($request, $rules, $customMessages);
if (!User::where('username', '=', $request->email)->exists()) {
Session::flash('message', 'You are not an Admin!');
Session::flash('alert-class', 'alert-danger');
return back();
}
if (Auth::attempt(['username' => $request->email, 'password' => $request->password]))
{
return redirect('/dashboard');
}
Session::flash('message', 'Password is Incorrect!');
Session::flash('alert-class', 'alert-info');
return back();
}
dashboardController.php
public function index()
{
return view('admin.dashboard.dashboard');
}
adminAuthenticate 中间件
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->route('login_page');
}
return $next($request);
}
我已将自定义中间件添加到 kernel.php
web.php
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'adminAuth' => \App\Http\Middleware\adminAuthenticate::class, //custom middleware
];
无法理解问题出在哪里。有人帮忙吗?提前致谢
【问题讨论】:
-
你能显示你的 kernel.php 吗??
-
@user11622164......更新帖子
-
@NicoHaase ....我在中间件中使用
dd()来检查用户激活...结果没问题...注销时用户激活显示为空...但不要'不重定向到路由... -
您希望运行 return redirect('/dashboard');用户登录后对吗?你可以在这一行之前dd,也许它永远不会进入这种情况,还要检查你是否继承了Middleware\Authenticate::class,因为有一个检查用户是否没有登录,重定向到lgin页面。
-
@Momo....奇怪的是,如果我从
/dashboard路由中删除middleware('adminAuth');...然后仪表板页面在成功登录后出现.....
标签: php laravel laravel-6 laravel-middleware laravel-authentication