Symfony 4 - 用户从外部 API 服务回调时变为空
Symfony 4 - User becomes null on callback from external API service
在 Symfony 4 上,当从任何外部 API 服务(在本例中 - Shopify API
)捕获回调路由时,我的登录用户变为 anon.
(HTTP):
在 localhost
上测试时一切正常
(HTTPS):
但是,在我的 remote
服务器(prod)上进行测试时,我的登录用户变为 null
/ Anonymous
。
从任何 API 服务捕获回调路由后,如何获取我的登录用户?我认为这可能是 HTTP 与 HTTPS 或某些 Symfony 设置的问题。
在 Shopify API 控制面板上 - 允许重定向 URL(s):
http://localhost:8000/shopify/callback
https://<myremoteip>.com/shopify/callback
Symfony 控制器路由(用于 Shopify 回调):
/**
* @Route("/shopify/callback", name="shopify_callback")
*/
public function shopify_auth_callback(Request $request)
{
dd($this->getUser());
}
回调结果(本地主机):
App\Entity\User {#977 ▼
-id: 103
-email: "aaaa@gmail.com"
}
回调结果(远程):
null
问题是我在导航到远程 URL 之前创建了一个新会话。
给未来读者的建议 - 确保您始终处于同一个会话中,您可以从请求中获取该会话。
避免这样做:
$session = new Session();
我遇到了同样的问题,但使用的是 Google Oauth 系统。
我刚刚将框架配置中的 cookie samesite 策略从 'strict'
更改为 'lax'
,它解决了我的问题
现在我可以在 api 重定向后让用户保持登录状态
framework:
session:
enabled: true
cookie_secure: 'auto'
cookie_samesite: 'lax'
cookie_lifetime: 86400
在 Symfony 4 上,当从任何外部 API 服务(在本例中 - Shopify API
)捕获回调路由时,我的登录用户变为 anon.
(HTTP):
在localhost
上测试时一切正常
(HTTPS):
但是,在我的remote
服务器(prod)上进行测试时,我的登录用户变为null
/Anonymous
。
从任何 API 服务捕获回调路由后,如何获取我的登录用户?我认为这可能是 HTTP 与 HTTPS 或某些 Symfony 设置的问题。
在 Shopify API 控制面板上 - 允许重定向 URL(s):
http://localhost:8000/shopify/callback
https://<myremoteip>.com/shopify/callback
Symfony 控制器路由(用于 Shopify 回调):
/**
* @Route("/shopify/callback", name="shopify_callback")
*/
public function shopify_auth_callback(Request $request)
{
dd($this->getUser());
}
回调结果(本地主机):
App\Entity\User {#977 ▼
-id: 103
-email: "aaaa@gmail.com"
}
回调结果(远程):
null
问题是我在导航到远程 URL 之前创建了一个新会话。
给未来读者的建议 - 确保您始终处于同一个会话中,您可以从请求中获取该会话。
避免这样做:
$session = new Session();
我遇到了同样的问题,但使用的是 Google Oauth 系统。
我刚刚将框架配置中的 cookie samesite 策略从 'strict'
更改为 'lax'
,它解决了我的问题
现在我可以在 api 重定向后让用户保持登录状态
framework:
session:
enabled: true
cookie_secure: 'auto'
cookie_samesite: 'lax'
cookie_lifetime: 86400