Php 中间件不使用laravel 5.4.6限制路由

Php 中间件不使用laravel 5.4.6限制路由,php,laravel,middleware,Php,Laravel,Middleware,我在处理中间件时遇到问题 这是数据库用户 以下是管理中间件代码: public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check() && Auth::user()->admin == 1) { return $next($request); }else{ return redirect('/

我在处理中间件时遇到问题

这是数据库用户

以下是管理中间件代码:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check() && Auth::user()->admin == 1) {
        return $next($request);
    }else{
        return redirect('/admin-login');
    }


}
以下是路线代码:

Route::group(['middleware' => 'admin'], function () {

Route::get('/dashboard', 'BackEnd\HomeController@getDashboard');
});

但当我登录时,它不起作用并重定向到仅登录页面,请指导我如何处理中间件问题。

您的密码不在bycryted中,您应该这样做

echo bycryp(12345) // paste this in db and then try again
我希望这不需要测试

public function handle($request, Closure $next, $guard = null)
{
  if (Auth::check() && Auth::user()->admin == 1) {
    return $next($request);
  } else {
    return redirect('/admin-login');
  }
}

你想要一组管理员专用的路由,对吗? 您可以改为使用can中间件

Route::group(['middleware' => 'can:admin'], function () {
    Route::get('/dashboard', 'BackEnd\HomeController@getDashboard');
});
这将检查授权策略,您可以在Providers/AuthServiceProvider.php中定义授权策略:

如果检查失败,您将得到未经授权的响应

如果您希望重定向到登录页面,您可以坚持使用自定义中间件,它应该是

if (Auth::check() && Auth::user()->admin == 1)

如果正确,则数据库中的密码不应为纯文本,而应加密保存,而不是bcrypt'12345'的结果。

为什么您的密码为纯文本而不是bcrypted?很抱歉,这是为了演示发布问题
if (Auth::check() && Auth::user()->admin == 1)