在Laravel中间件中向请求数组添加值是一个好习惯吗?

问题描述 投票:1回答:1

我有一个身份验证中间件来检查传递的api密钥的有效性。我从数据库中获取用户ID将其存储到请求数组,以便请求页面将获取用户ID。

  public function handle($request, Closure $next) {

        $key = $request->get('key');

        $user = User::where('token', '=' ,$key)->first();

                if($user != null){

                    $request->request->add(['middlewareUserID' => $user->id]);
                    return $next($request);
                  }
                  else {
                    return response(401);
                  }
    }

这是一个好习惯吗?

php laravel laravel-5 lumen laravel-middleware
1个回答
1
投票

我想说在这种情况下这不是必要的。

我会使用类似这样的代码:

use Illuminate\Contracts\Auth\Guard;

class YourMiddleware 
{
    protected $guard;

    public function __construct(Guard $guard)
    {
        $this->guard = $guard;
    }

    public function handle($request, Closure $next) {

        $key = $request->get('key');

        $user = User::where('token', '=' ,$key)->first();

        if(!$user){
           return response(401);
        }

        $this->guard->setUser($user);
        return $next($request);

    }
}

因此,当有用户给定令牌时,您可以在行$this->guard->setUser($user);中验证用户,当令牌无效时,您返回return response(401);

我没有看到任何需要设置此用户ID以显示请求。

© www.soinside.com 2019 - 2024. All rights reserved.