Laravel 6 个中间件

Laravel 6x Middleware

我是 Laravel 的新手。我一直在研究中间件以及如何根据文档实现它。

我有一个路由通过我的 IsAdmin 中间件 Class。

出于某种原因,当用户 IsAdmin 设置为 0 时,它仍在完成请求。

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

     $IfAdmin = auth()->user()->IsAdmin;

      if (!auth()->user()->IsAdmin = "1"){

     abort(403, 'Unauthorized action.');

      }else{

        return $next($request);
        }

    }
}


在我的数据库中,用户 table "IsAdmin" 设置为 0。我已经能够通过 运行 在另一个页面上确认用户的查询来确认这一点IsAdmin 为 0。

您需要进行变量比较。您的代码中有赋值运算符。Documentation 使用

if (!auth()->user()->IsAdmin){
    abort(403, 'Unauthorized action.');
}else{
    return $next($request);
}