另一个应用程序向我的应用程序发出http post请求,传递一些参数,我返回请求并获取当前用户的电子邮件地址(是的,我在.htaccess中设置了必要的CORS头)
我现在正在使用该电子邮件创建一个用户实例,并尝试对该用户进行身份验证。
Auth::login($user, true);
return response("OK", 200);
这可以正常工作(如果找到用户)。
我现在期望使用Auth::login创建一个经过身份验证的会话,并保存一个会话cookie。一旦用户打开我的应用程序,就会发现此会话,无需进一步登录,仪表板就会打开。
但是,没有保存任何cookie。
然后我尝试使用手动保存cookie
response("OK", 200)
->cookie("laravel_session", Session::getId(), 60);
response("OK", 200)
->cookie("laravel_session", encrypt(Session::getId()), 60);
以及
Cookie::queue(Cookie::make("laravel_session", Session::getId(), 60));
response("OK", 200);
在任何情况下,cookie都是设置好的,但当打开我的应用程序时,会显示登录屏幕。所以我的猜测是,肯定有我遗漏的任何东西,或者laravel\u会话cookie包含一些其他数据。
使用ajax post请求,如何正确地对用户进行身份验证并将其保存为cookie,以便他在打开我的应用程序时登录?
我在kernel.php中添加了一些中间件。现在会话cookie将自动设置。然而,它似乎没有得到加密。ajax请求中的“laravel\u session”cookie值现在如下所示:
lYLxSwyuhfHToruJhc0r2zWNLkj9ONTlBM3QjkAo
. 然而,当使用通常的“网络”路径时,cookie beeing设置如下所示:
eyJpdiI6InV5bGRQNFJ4c01TYjZwT0I0amxzS1E9PSIsInZhbHVlIjoiZFI2WWpVWGxmTldDcVJvVlwvbVJicXBxM0pjRkVRUlBRKzZWb1BkbzliZHBVdTlmUEV4UzZkaFVMbmlRTHNYczFOZm5HSWkwRXhjb3BJRGI1NGRyM2tnPT0iLCJtYWMiOiJjMjAwMWIyMGIxYmQwYzkxMGQyNGJhMDZmZDJiNThjNGZhMTUyZWVjZDlkNjg5ZWVjYjY2MGE1ZTlmZDAxOGNmIn0%3D
这是我的
['api']
kernel.php中的值
protected $middlewareGroups
'api' => [
'throttle:60,1',
'bindings',
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class
],
但是,当直接在我的响应中设置具有不同名称的会话cookie时,该值现在似乎已加密:
return response("OK", 200)
->cookie("my_session", Session::getId(), $minutes);