soi*_*ipo 3 php cookies authorization remember-me symfony
我会解释我的问题.我使用API传递用户名和加密密码登录用户,因此我无法仅通过用户名加载用户.
我正在使用GUARD来获取用户详细信息并为给定防火墙授权用户.到现在为止还挺好.
当我想激活记住我时,我的问题就开始了.显然,由于用户未存储在我的数据库中,因此记住我无法按名称加载用户.
目前,我克服了实现类RememberMeServicesInterface的问题,并在我的防护类中使用了我的新类,该类扩展了AbstractFormLoginAuthenticator.
老实说,感觉就像一个黑客,因为我非常肯定必须有一个更好的方法来做到这一点.
检查代码我注意到Symfony有2个实现RememberMeServiceInterface,TokenBasedRememberMeServices和PersistentTokenBasedRememberMeServices的类,有人可以解释我如何注入我的RememberMeService并使用它来授权我的用户?
在此先感谢社区的帮助.
我终于找到了一种方法来实现自定义记住我.这些是步骤:
1)创建一个扩展Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\RememberMeFactory的类
这个类使用自定义键和create()覆盖getKey(),这样我就可以注入自己的令牌服务security.authentication.rememberme.services.MYCUSTOMTOKENSERVICE
2)创建一个扩展Symfony\Component\Security\Http\RememberMe\TokenBasedRememberMeServices的令牌服务,以便我可以使用我的身份验证逻辑和我的自定义UserProvider函数
3)创建一个扩展Symfony\Component\Security\Http\RememberMe\ResponseListener的侦听器
4)在我的服务yml文件中绑定在一起
customlistener.security.authentication.listener:class:##### public:false
security.authentication.rememberme.services.customtokenservice:class:### parent:"security.authentication.rememberme.services.abstract"abstract:true
5)在security.yml中我使用我在getKey中使用的字符串来回忆我的监听器custom-remember-me,并使用相同的remember-me键选项
像魅力一样工作!
| 归档时间: |
|
| 查看次数: |
1348 次 |
| 最近记录: |