Laravel 5.3中间件(Auth :: user())= null

时间:2016-12-08 20:31:40

标签: php laravel authentication middleware

我用来检查用户是否是具有中间件的管理员但是5.3不可能。我之前使用过这段代码:

if(Auth::guest()) //If the user is just a guest
    {
        return redirect("/");
    }
    if(Auth::user()->isAdmin == 1) //If the user is logged in and he is the Admin
    {
        return $next($request);
    }
    else //If the user is not the admin he can't see this page
    {
        return redirect("/");
    }
}

目前我已经尝试了以下但没有运气。任何人都可以指出我正确的方向,我们可以检查用户是管理员还是普通用户?

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

    if ($request){
        if ($request->user()->role == 'Admin'){
            return "yes";
        }
    }

    return $next($request);
}

2 个答案:

答案 0 :(得分:0)

您只有一个=。您必须使用==(或更严格地使用===)。

答案 1 :(得分:0)

'='运算符为变量赋值例如。但是,'=='将某些东西与另一个东西进行比较。

在这段代码中:

{% capture handle}{{ color }}{% endcapture %}

您正在访问“$ request”对象并从中提取用户角色。您打算使用字符串'Admin'评估返回的'$ request'对象,但是,您不是在评估,而是要分配它。

解决此问题:

{% case handle %}...

使用'=='运算符将给定值与您提供的静态字符串进行比较。