猿问

Auth.basic 身份验证提示在 Laravel 5.8 中不显示

我一直在使用auth.basic中间件进行某些cronjobs。直到最近,它工作完全正常。突然,登录提示不再显示,它立即将我发送到正常的登录页面。我没有对路由,路由中的控制器或htaccess文件进行任何更改。


在我的 htaccess 文件中,仍然有这样一行:


    RewriteCond %{HTTP:Authorization} .

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

我定义的路线如下:


Route::group(['middleware' => ['auth.basic','role:admin']], function() {

    Route::get('/backup', 'ScriptController@cronjobs');

});

有谁知道为什么登录提示不再显示?我在服务器上的多个设备上以及我的本地主机上尝试了它。它似乎不再出现。


侃侃无极
浏览 197回答 2
2回答

开满天机

所以我发现了问题所在。在控制器内部,有人添加了以下行:public function __construct()    {        $this->middleware('auth');        $this->middleware('role:admin');    }我猜这覆盖了auth.basic中间件。现在它再次按预期工作!无论如何,谢谢。

哈士奇WWW

    // Route group    Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){        Route::get('dashboard','DashboardController@index')->name('dashboard');    });    // admin middleware     if(Auth::check() && Auth::user()->role->id == 1)          {            return $next($request);          }else {            return redirect()->route('login');          }    // RedirectIfAuthenticated.php    if (Auth::guard($guard)->check() && Auth::user()->role->id==1)  {              return redirect()->route('admin.dashboard');          }else {              return $next($request);          }    //  karnel.php file    use App\Http\Middleware\Adminmiddleware;    protected $routeMiddleware = [    'admin'   => Adminmiddleware::class,    ];// LoginController  public function __construct()    {      if(Auth::check() && Auth::user()->role->id == 1)      {        $this->redirectTo = route('admin.dashboard');      }        $this->middleware('guest')->except('logout');    }
随时随地看视频慕课网APP
我要回答