如何从中间件获取变量?
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()
我已经为 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()