Symfony 根据远程 API 对用户进行身份验证

Symfony authenticate user against remote API

我有一个问题,和这个人差不多:

但我的问题是,我该如何处理令牌?

我使用了 guard,我做了一个 api 服务,我可以在其中检索令牌,但我可以在哪里存储它?我想设置一个 cookie,但我不能从我的服务中写入 cookie,否则我将无法启动会话,所以在答案中我不明白:"store token in your frontend storage".

我真的没有办法把token存到cookie里吗?

谢谢!

不太清楚他的意思,但我认为最好的解决方案是将其存储在会话变量中。

为什么不能不使用来自服务的会话?将会话组件注入您的服务,您就可以开始了。

class TheService {
  public function __construct(SessionInterface $session) {
    $this->session = $session;
  }

  public function stuff() {
    $this->session->set('my_token', 'h3ll0');
  }
}

http://symfony.com/doc/current/components/http_foundation/sessions.html

如果您使用的是当前版本的 Symfony,其自动装配功能将负责注入 session 服务,否则您需要在 services.yml 中配置该服务:

services:
  my_service:
    class: AppBundle\Service\TheService
    public: true
    arguments: ['@session']