如何从中间件获取变量?

How to get variable from middleware?

我已经为 API 创建了自己的中间件。以下是我根据请求参数 access_token

获取有效用户详细信息的代码
namespace App\Http\Middleware;

use Closure;
use App\Exceptions\GeneralException;
use App\Models\Access\User\User;

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

            $user = User::where("access_token",$request->header('access-token'))->with('details')->first();

        } catch (Exception $e) {

            return response()->json(['error'=>'Something is wrong']);

        }

        return $next($request);

    }
}

但是如何在我的 Controller 中访问这个 $user 变量?

您可以使用 onceUsingId() 将用户登录到单个请求的应用程序中。不会使用任何会话或 cookie,这意味着此方法在构建无状态时可能会有所帮助 API:

因此在您的 middleware 中您可以将其用作:

$user = User::where("access_token",$request->header('access-token'))->first();

if($user) {
   auth()->onceUsingId($user->id);
}

然后在您的控制器中,您可以将其用作:

auth()->user()

Docs