Php 如何在symfony中创建自定义记忆我提供程序

Php 如何在symfony中创建自定义记忆我提供程序,php,symfony,cookies,authorization,remember-me,Php,Symfony,Cookies,Authorization,Remember Me,我会解释我的问题。我使用传递用户名和加密密码的API登录用户,因此我无法仅通过用户名加载用户 我正在使用GUARD获取用户详细信息,并为给定防火墙授权用户。到目前为止还不错 当我想激活“记住我”时,我的问题就开始了。显然,由于该用户未存储在我的数据库中,因此“记住我”无法按名称加载该用户 目前,我克服了在接口中实现类RemembermServices并在扩展AbstractFormLoginAuthenticator的guard类中使用新类的问题 老实说,这感觉像是一个黑客,因为我非常确定一定有

我会解释我的问题。我使用传递用户名和加密密码的API登录用户,因此我无法仅通过用户名加载用户

我正在使用GUARD获取用户详细信息,并为给定防火墙授权用户。到目前为止还不错

当我想激活“记住我”时,我的问题就开始了。显然,由于该用户未存储在我的数据库中,因此“记住我”无法按名称加载该用户

目前,我克服了在接口中实现类RemembermServices并在扩展AbstractFormLoginAuthenticator的guard类中使用新类的问题

老实说,这感觉像是一个黑客,因为我非常确定一定有更好的方法来做到这一点

检查代码我注意到Symfony有两个类实现了RememberServiceInterface,TokenBasedRememberMeServices和PersistentTokenBasedRememberMeServices,有人能告诉我如何注入RememberMeService并使用它来授权我的用户吗


提前感谢社区的帮助。

我终于找到了实现“记住我”的方法。 以下是步骤:

1) 创建扩展Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\membermefactory的类

此类使用自定义密钥覆盖getKey(),并创建(),以便我可以注入自己的令牌服务security.authentication.rememberme.services.MYCUSTOMTOKENSERVICE

2) 创建扩展Symfony\Component\Security\Http\memberme\tokenbasedrembermeservices的令牌服务,以便我可以使用身份验证逻辑和自定义UserProvider函数

3) 创建扩展Symfony\Component\Security\Http\memberme\ResponseListener的侦听器

4) 在我的服务yml文件中绑定在一起

customlistener.security.authentication.listener: 类别:##### 公众:错

security.authentication.rememberme.services.customtokenservice: 类别:### 父级:“安全性、身份验证、记忆、服务、摘要” 摘要:没错

5) 在security.yml中,我使用getKey中使用的字符串调用我的侦听器自定义memberme,并使用相同的memberme key选项


工作得很有魅力

谢谢你发布这个。你能把它和你的守卫实现联系起来吗?@DebreczeniAndrás你有没有尝试过做类似于soipo的事情?我也有兴趣知道答案,如果这是一个工作solution@Christian不,还没有。我最近才设法升级到symfony 2.8,所以还不能使用Guard。一旦我解决了问题,我一定会把它贴出来。