Laravel身份验证:如何获取用户属性?

时间:2015-11-12 17:34:37

标签: php mysql laravel-5

我想查看中间件中的帐户状态。状态由tinyint表示。如果它是1那么它被激活,否则为0.

在App \ Http \ Middleware \ Authenticate中,我有:

;[].forEach.apply(arguments, iterator)
;(function(){})()

$ request-> input('status')== 0可能是错误的。我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先,我建议您在检查状态之前检查用户是否是来宾。否则,您正试图抓住客人的状态,这是不可能的。

其次,您可以使用user方法访问该用户,这样您就可以像这样抓住用户的状态:

public function handle($request, Closure $next)
{
    if ($this->auth->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('auth/login');
        }
    }

    if ($this->auth->user()->status === 0) {
        Session::flash('message', 'Your account hasn\'t been activated, please try again later.');
        return redirect('/');
    }

    return $next($request);
}

额外花絮:Laravel有$casts属性,您可以添加到模型中。因此,如果您将此添加到您的用户模型:

protected $casts = [
    'status' => 'boolean'
];

它会自动转换" cast" status为一个布尔值,所以你可以这样做:

if (!$this->auth->user()->status) {
    // User's status is false
}