Php 中间件在Laravel中工作不正常

Php 中间件在Laravel中工作不正常,php,laravel,laravel-6,laravel-middleware,laravel-authentication,Php,Laravel,Laravel 6,Laravel Middleware,Laravel Authentication,我的Laravel项目中有一个管理面板 有一个登录页面和一个仪表板页面。 当用户成功登录时,应用程序将用户带到仪表板页面 但从我将自定义中间件添加到我的路由以检查用户身份验证时开始,尽管我已为登录提供了正确的电子邮件和密码,但应用程序始终将我带到登录页面,而不是带我到仪表板页面 userController.php public function admin_login(Request $request) { $rules = [ 'email' => 'requi

我的Laravel项目中有一个管理面板

有一个
登录页面
和一个
仪表板页面
。 当用户成功登录时,应用程序将用户带到仪表板页面

但从我将自定义
中间件
添加到我的
路由
以检查用户身份验证时开始,尽管我已为登录提供了正确的电子邮件和密码,但应用程序始终将我带到登录页面,而不是带我到
仪表板页面

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();
}
public function index()
{
     return view('admin.dashboard.dashboard');
}
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'adminAuth' => \App\Http\Middleware\adminAuthenticate::class, //custom middleware
    ];
dashboardController.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();
}
public function index()
{
     return view('admin.dashboard.dashboard');
}
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'adminAuth' => \App\Http\Middleware\adminAuthenticate::class, //custom middleware
    ];
adminAuthenticate中间件

public function handle($request, Closure $next)
{
    if (!Auth::check()) {
            return redirect()->route('login_page');
    }

    return $next($request);
}
我已将自定义中间件添加到kernel.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();
}
public function index()
{
     return view('admin.dashboard.dashboard');
}
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'adminAuth' => \App\Http\Middleware\adminAuthenticate::class, //custom middleware
    ];
web.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();
}
public function index()
{
     return view('admin.dashboard.dashboard');
}
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
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

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();
}
public function index()
{
     return view('admin.dashboard.dashboard');
}
Route::get('/admin-login', 'userController@index')->name('login_page');
Route::get('/dashboard', 'dashboardController@index')->middleware('adminAuth');
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();
}
您输入电子邮件,但您的条件与用户名相比较,因此身份验证将为false。
我希望这能帮助你。谢谢

在我检查您的代码之后。我看到用户控制器出现了错误的状况

if (!User::where('username', '=', $request->email)->exists()) {

   Session::flash('message', 'You are not an Admin!'); 
   Session::flash('alert-class', 'alert-danger'); 
   return back();
}
您输入电子邮件,但您的条件与用户名相比较,因此身份验证将为false。
我希望这能帮助你。谢谢

你能展示你的kernel.php吗???@user11622164。。。。。。更新post@NicoHaase....I在中间件中使用
dd()
检查用户激活情况…结果正常…注销时用户激活显示为null…但不要重定向到路由…您希望运行返回重定向('/dashboard');用户登录后对吗?您可以在这一行之前添加,也许它永远不会进入这种情况,还可以检查您是否继承了中间件\Authenticate::class,因为有一个检查用户是否未登录,重定向到lgin页面。@Momo….piquiliar问题是如果我删除
中间件('adminAuth')
/dashboard
路径…然后在成功登录后进入仪表板页面…您可以显示您的kernel.php吗???@user11622164。。。。。。更新post@NicoHaase....I在中间件中使用
dd()
检查用户激活情况…结果正常…注销时用户激活显示为null…但不要重定向到路由…您希望运行返回重定向('/dashboard');用户登录后对吗?您可以在这一行之前添加,也许它永远不会进入这种情况,还可以检查您是否继承了中间件\Authenticate::class,因为有一个检查用户是否未登录,重定向到lgin页面。@Momo….piquiliar问题是如果我删除
中间件('adminAuth')
/dashboard
路径…然后在成功登录后进入仪表板页面…值是DB'username'数据字段中的电子邮件…因此,身份验证没有问题值是DB'username'数据字段中的电子邮件…因此,身份验证没有问题