我有一个项目,该项目使用token_
和refreshToken_
之类的cookie对用户进行身份验证,还有一个中间件,该中间件拦截我的路由并验证用户是否已登录。
在我的中间件中,当我需要续订token_
时,我有以下代码:
namespace App\Http\Middleware\VerifyAccessToken
$cookie_name = "token_";
$cookie_value = $obj->access_token;
$expires_in = $obj->expires_in;
$time = time() + $expires_in; // 3600 = 1 hora
$path = "/";
$domain = env('COOKIE_DOMAIN');
setcookie($cookie_name, $cookie_value, $time, $path, $domain, false, true);
$cookie_name = "refreshToken_";
$cookie_value = $obj->refresh_token;
setcookie($cookie_name, $cookie_value, $time + 3600, $path, $domain, false, true);
return $next($request);
它显然可以正常工作,但问题是:
中间件拦截了我的路由并更新了cookie后,请求继续进行到他的控制器,但是在那儿,我无法使用$_COOKIE['token_']
访问cookie并收到错误消息,但是如果我在chrome的检查器中查看, cookie在那里并重新加载页面(F5)我可以在控制器中访问cookie
有没有一种方法可以让我访问控制器中的cookie,而无需先进入视图?
答案 0 :(得分:0)
要在Laravel中读取Cookie的值,您需要使用:
$token = Cookie::queued('token_');
dd($token->getValue());
https://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Cookie.html