【问题标题】:Laravel 6x Middleware [closed]Laravel 6x 中间件 [关闭]
【发布时间】:2020-01-07 22:38:52
【问题描述】:

我对 Laravel 还很陌生。我一直在研究中间件以及如何实现这一点并基于文档。

我有一条通过我的 IsAdmin 中间件类的路由。

由于某种原因,当用户 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);
        }

    }
}


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

【问题讨论】:

  • 您不是在检查 2 个值是否相等,而是在分配一个值
  • 正如其他人已经提到的那样。检查您的代码。 If 语句正在赋值。
  • 是的!非常基础的PHP!对不起!感谢观看!

标签: php laravel laravel-6


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我早该知道的!
猜你喜欢
  • 1970-01-01
  • 2019-05-08
  • 2020-03-11
  • 2020-07-06
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
相关资源
最近更新 更多