繁体   English   中英

身份验证中间件未重定向到登录页面

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM