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

时间:2017-03-21 16:42:10

标签: php laravel middleware

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

enter image description here

这是数据库用户 enter image description here

这里是AdminMiddleware代码:

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');
});

但是当我登录然后它没有工作并重定向到只有登录页面时,请指导我如何处理中间件问题。

2 个答案:

答案 0 :(得分:1)

你想要一组仅限管理员的路线,对吧? 您可以使用can中间件

Route::group(['middleware' => 'can:admin'], function () {
    Route::get('/dashboard', 'BackEnd\HomeController@getDashboard');
});

将检查您可以在Providers/AuthServiceProvider.php

中定义的授权政策
Gate::define('admin', function (User $user) {
    return $user->admin == 1;
});

如果检查失败,您将收到“未经授权”的回复。

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

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

Adnan Mumtaz's answer是正确的,密码不应该是数据库中的纯文本,而应该加密(保存为bcrypt('12345')的结果)。

答案 1 :(得分:0)

你的密码不是你应该做的

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');
  }
}