繁体   English   中英

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

[英]Laravel 5.3 middleware (Auth::user()) = null

我用来检查用户是否是具有中间件的管理员,但无法使用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);
}

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

例如,“ =”运算符将值分配给变量。 但是,“ ==”将某些内容与另一个进行比较。

在这段代码中:

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

您正在访问“ $ request”对象并从中拉出用户角色。 您打算使用字符串'Admin'评估返回的'$ request'对象,但是,您不是在评估而是尝试对其进行分配。

要解决此问题:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM