【问题标题】:How to get variable from middleware?如何从中间件获取变量?
【发布时间】:2017-04-22 10:05:30
【问题描述】:

我已经为 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 变量?

【问题讨论】:

    标签: php laravel-5.3


    【解决方案1】:

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

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

    $user = User::where("access_token",$request->header('access-token'))->first();
    
    if($user) {
       auth()->onceUsingId($user->id);
    }
    

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

    auth()->user()
    

    Docs

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2012-01-30
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多