Php 419登录laravel后刷新页面时出现页面过期错误
我有多个角色,登录时效果很好。超级管理员指向管理员仪表板,普通用户指向普通仪表板。但登录后,若页面刷新,419页面过期错误将显示,路径将再次登录。 登录控制器: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
<?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'
]);