【发布时间】:2018-12-24 18:58:12
【问题描述】:
我即将为我的应用创建一个单点登录界面。另一个应用程序发送 AJAX POST 请求,我对用户进行身份验证并返回响应。正在设置会话 cookie,但未加密。
相关守则
$user = User::where('email', $email)->first();
if ($user) {
Auth::login($user);
return response("OK", 200);
}
我在 Kernel.php 中的 'api' 部分
'api' => [
'throttle:60,1',
'bindings',
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\App\Http\Middleware\EncryptCookies::class,
],
我的路由(没有额外的中间件)
Route::post(
'/auth-request', [
'uses' => 'UserController@post_authenticateRequest',
'as' => 'authrequest'
]);
Kernel.php 中的 EncryptCookies 类似乎对 AJAX 发布请求没有任何影响 - 但仅适用于会话部分。当我手动添加像
这样的cookie时response("OK", 200)->cookie("mysession", Session::getId(), 60);
它是加密的!
当我在 Kernel.php 中为“api”和“web”完全删除 EncryptCookies 时,从 AJAX 请求创建的会话被正确加载 - 但不再加密。
如何加密 AJAX 会话 cookie?我还需要其他中间件吗?
感谢您的帮助。
【问题讨论】:
-
把
EncryptCookies放在StartSession之前? -
@lagbox 哦,伙计。我已经这样做了,但它没有改变。但是要检查您的建议,我已将其放在所有其他定义之前,并欢呼它现在已加密!谢谢和欢呼。