【发布时间】:2017-08-28 21:39:53
【问题描述】:
在我的 Laravel 5.4 项目中,我试图像这样在我的控制器方法中存储一个状态令牌。
use Illuminate\Support\Facades\Session ;
...
public function authorize()
{
Session::set('state', $client->getState());
A lot of code here...
header('Location: ' . $authorizationUrl);
exit;
}
我也尝试过使用辅助函数
session('state', $client->getState());
但无论我尝试了什么,会话都不会被创建或持续存在。
所以我转而直接使用 Symfony 组件..
use Symfony\Component\HttpFoundation\Session\Session;
...
public function authorise()
{
$session = new Session();
$session->set('state', $client->getState());
...
}
这样做非常有效。任何解释为什么门面不起作用?
【问题讨论】:
-
$client->getState()返回什么? -
我的第一句话,“存储一个状态令牌”。它只是用于防止 Oauth2 请求中的 CSRF 的随机字符串。例如
LWy7LLRNZc1uXTfe4vXtsXbwGK4Ll7Jd5dEo7QFw -
此外,在进行故障排除时,我已经测试了这当然是可能的原因,我只是硬编码了一个键和值,例如“mykey”、“myvalue”,而不是使用该函数。
-
检查您的存储文件夹权限
-
@Amr Aly 谢谢你的帮助。事实证明,我没有提供我应该提供的所有信息。我正在实施第三方脚本并在我的问题中过度简化它。我应该提到在函数结束之前发生了重定向
header('Location: ' . $authUrl);。我编辑了上面的问题以现在显示这一点,并且还包括下面的解释以供其他人参考。
标签: php laravel session laravel-5.4 php-7.1