Php 419登录laravel后刷新页面时出现页面过期错误

Php 419登录laravel后刷新页面时出现页面过期错误,php,laravel,authentication,Php,Laravel,Authentication,我有多个角色,登录时效果很好。超级管理员指向管理员仪表板,普通用户指向普通仪表板。但登录后,若页面刷新,419页面过期错误将显示,路径将再次登录。 登录控制器: <?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\Authenticates

我有多个角色,登录时效果很好。超级管理员指向管理员仪表板,普通用户指向普通仪表板。但登录后,若页面刷新,419页面过期错误将显示,路径将再次登录。 登录控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;
use App\User;
use App\Roles_Users\Roles_Users;
use App\Roles\Roles;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    //protected $redirectTo = '/';


    public function authenticated($request)
    {
        $user = Auth::user();
        // echo'<pre>';
        // print_r($user);
        // exit;
        $userrole = Roles_Users::where('userid',$user->id)->first();

        if(empty($userrole)){
            return redirect('/welcome');
        }else{
            $role = Roles::where('id',$userrole->roleid)->first();
        }

        if($role->rolename === 'SuperAdmin') {

            $userdata = User::all();
            $data = Roles::all();
            return view('/superadmin.superdash',['userdata'=>$userdata,'data'=>$data]);

        }elseif($role->rolename === 'Admin'){

            return view('/admin.admindash');

        }else{

            return view('/home');
        }

    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}
Route::get('dashboard', [
    'middleware' => 'assignRole',
    'uses' => 'AdminController@index'
]);
不知道发生了什么事。可能是我的重定向认证:

public function handle($request, Closure $next)
    {
        $user = Auth::user();

        $userrole = Roles_Users::where('userid',$user->id)->first();

        if(!empty($userrole)){
            $role = Roles::where('id',$userrole->roleid)->first();
        }

        if ($role->rolename === 'SuperAdmin') {

            $request->request->add(['roles' => 'superadmin']); //add request

        } elseif ($role->rolename === 'Admin') {
            $request->request->add(['roles' => 'admin']); //add request

        } else {
            $request->request->add(['roles' => 'normaluser']); //add request

        }
        return $next($request);
    }

问题是使用登录控制器的身份验证。我所做的是创建一个中间件,将用户角色发送到控制器,然后根据角色重定向。 中间件:

protected $redirectTo ='/dashboard';
登录控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;
use App\User;
use App\Roles_Users\Roles_Users;
use App\Roles\Roles;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    //protected $redirectTo = '/';


    public function authenticated($request)
    {
        $user = Auth::user();
        // echo'<pre>';
        // print_r($user);
        // exit;
        $userrole = Roles_Users::where('userid',$user->id)->first();

        if(empty($userrole)){
            return redirect('/welcome');
        }else{
            $role = Roles::where('id',$userrole->roleid)->first();
        }

        if($role->rolename === 'SuperAdmin') {

            $userdata = User::all();
            $data = Roles::all();
            return view('/superadmin.superdash',['userdata'=>$userdata,'data'=>$data]);

        }elseif($role->rolename === 'Admin'){

            return view('/admin.admindash');

        }else{

            return view('/home');
        }

    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}
Route::get('dashboard', [
    'middleware' => 'assignRole',
    'uses' => 'AdminController@index'
]);
路线:

public function index(Request $request)
    {
        if($request['roles'] === 'superadmin') {

            $userdata = User::all();
            $data = Roles::all();
            return view('superadmin.superdash',['userdata'=>$userdata,'data'=>$data]);

        }elseif($request['roles'] === 'admin'){

            return view('admin.admindash');

        }else{

            return view('/home');
        }
    }
管理员控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;
use App\User;
use App\Roles_Users\Roles_Users;
use App\Roles\Roles;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    //protected $redirectTo = '/';


    public function authenticated($request)
    {
        $user = Auth::user();
        // echo'<pre>';
        // print_r($user);
        // exit;
        $userrole = Roles_Users::where('userid',$user->id)->first();

        if(empty($userrole)){
            return redirect('/welcome');
        }else{
            $role = Roles::where('id',$userrole->roleid)->first();
        }

        if($role->rolename === 'SuperAdmin') {

            $userdata = User::all();
            $data = Roles::all();
            return view('/superadmin.superdash',['userdata'=>$userdata,'data'=>$data]);

        }elseif($role->rolename === 'Admin'){

            return view('/admin.admindash');

        }else{

            return view('/home');
        }

    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}
Route::get('dashboard', [
    'middleware' => 'assignRole',
    'uses' => 'AdminController@index'
]);