[英]Auth middleware not redirecting to login page
在这种情况下,我有一个路由/admin
,需要激活Auth
中间件。 我在web.php
路由中指出了中间件要求。 另外,我确实有laravel的默认auth
设置。 kernel.php
确实也指示了中间件。
但是,足够奇怪的是/admin
却使我无所事事进入白页。 登录后,问题就不存在了。 它一直在工作,突然间它不再工作了。
身份验证中间件是这样的:
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string
*/
protected function redirectTo($request)
{
return route('login');
}
}
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\NewsletterSubscribers;
use App\User;
use File;
class adminController extends Controller
{
//
public function __construct()
{
$this->middleware('auth');
$this->middleware('admin');
}
public function index(){
return view('admin.home');
}
public function changebg(){
return view('admin.changebg');
}
public function changebgimage(Request $request){
$this->validate($request,
[
'image'=>'required|image|mimes:jpg,JPG,jpeg,JPEG|max:4096|dimensions:max_width:1600,max_height:1100',
]
);
$path="images/";
$imagepath="images/bg.jpg";
if( File::exists($imagepath))
{
unlink($imagepath);
}
if ( ! File::exists($path) )
{
File::makeDirectory($path,0777,true);
}
$getimageName = "bg.jpg";
$request->image->move(public_path($path), $getimageName);
return view('admin.home');
}
public function newslettersubscriberslist(){
$newslettersubscribers= NewsletterSubscribers::all();
$count=0;
return view('admin.subscriberslist',compact('newslettersubscribers','count'));
}
public function registerAdmin(){
return view('auth.adminregister');
}
public function viewAdmins(){
$admins= User::select('users.*')->where('role','=','admin')->get();
//print_r($admins);
$count=0;
return view('admin.adminlist',compact('admins','count'));
}
public function viewUsers(){
$users= User::select('users.*')->where('role','=','user')->get();
//print_r($admins);
$count=0;
return view('admin.userlist',compact('users','count'));
}
}
管理员中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->role == 'admin') {
return $next($request);
}
else {
return redirect('/login');
}
}
}
我正在使用的路线:
Route::get('/admin', 'AdminController@index')->name('adminhome')->middleware('auth');
我在这里没有发现任何奇怪的东西,但是奇怪的是这个问题存在了。 你们可以在这里或某个地方找到不寻常的东西吗?
首先,请确保您已打开错误报告。 还可以看看laravel日志。 查看您的代码,问题可能出在AdminController
情况下。 在路由中,您具有'AdminController@index'
但您显示的类的名称为adminController
,并且应该为AdminController
。 我也不知道文件的名称是什么,但是应该再次是AdminController.php
您可以像这样使用中间件
Route::group(['middleware'=>'auth'], function()
{
Route::get('/admin', 'AdminController@index')->name('adminhome');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.