php - 中间件在 Laravel 中无法正常工作
问题描述
我的 Laravel 项目中有一个管理面板。
有一个login page
和一个dashboard page
。当用户成功登录时,应用程序将用户带到仪表板页面。
但是从我将自定义添加middleware
到我route
以检查用户身份验证时,虽然我已经提供了正确的电子邮件和密码以进行日志记录,但应用程序一直将我带到登录页面而不是带我到dashboard page
.
用户控制器.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();
}
仪表板控制器.php
public function index()
{
return view('admin.dashboard.dashboard');
}
管理员身份验证中间件
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->route('login_page');
}
return $next($request);
}
我已将自定义中间件添加到kernel.php
网页.php
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
内核.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'adminAuth' => \App\Http\Middleware\adminAuthenticate::class, //custom middleware
];
无法理解问题出在哪里。有人帮忙吗?提前致谢
解决方案
在我查看您的代码之后。我看到了用户控制器错误的情况。
if (!User::where('username', '=', $request->email)->exists()) {
Session::flash('message', 'You are not an Admin!');
Session::flash('alert-class', 'alert-danger');
return back();
}
您输入了电子邮件,但您的条件与用户名相比,因此身份验证将是错误的。我希望这可以帮助你。谢谢!
推荐阅读
- inno-setup - 将 Inno Setup 环境变量 (srcexe) 写入文件
- java - 为什么 RecyclerView 向上滚动将焦点放在上一行的最后一个图块上
- python - 为什么python不只锁定可变数据?
- javascript - Chrome 和之前卸载/卸载
- c - 将结构添加到队列
- python - sqlalchemy db.create_all() 创建了意外的表
- azure - 为任何这些资源导出设置/配置的简单 Runbook 脚本是什么?
- php - 未在 mailtrap 中收到正确 .env 的电子邮件
- sql - 具有差异模式的联合 2 表
- sql - 别名在使用时显示为无效的列名