gpt4 book ai didi

symfony - 如何在Symfony 2中配置“记住我”的监听器?

转载 作者:行者123 更新时间:2023-12-04 04:06:44 24 4
gpt4 key购买 nike

我已经成功实现了custom authentication provider,但是现在我还需要添加“记住我”功能,而我找不到有关该操作的文档。

我尝试添加以下内容:

remember_me:
key: "%secret%"
lifetime: 31536000 # 1 year
always_remember_me: true

但是它是这样说的:
You must configure at least one remember-me aware listener (such as form-login) for each firewall that has remember-me enabled.
我找到了,但是我不确定如何使用它: Symfony\Component\Security\Core\Authentication\Provider\RememberMeAuthenticationProvider
那么 RememberMeAwareInterface在哪里? (我猜有一个吗?就像ContainerAware一样)我应该怎么做?

我认为我不需要编写自己的实现,默认的实现应该可以与我的自定义身份验证提供程序配合使用。

最佳答案

我编写的自定义Facebook身份验证提供程序存在相同的问题。该解决方案最终变得非常简单:

我假设您使用自SecurityFactoryInterface扩展的自定义Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\AbstractFactory实现实现了自定义身份验证提供程序。如果这样做了,剩下的就是配置问题了:

  • 在安全配置中,为防火墙配置remember_me功能。假设您将其配置到public防火墙中,则添加的配置参数可能如下所示:
    firewalls:
    public:
    remember_me:
    key: "%secret%"
    lifetime: 31536000 # 365 days in seconds
    path: /
    domain: ~ # Defaults to the current domain from $_SERVER
  • 在相同的配置中,为身份验证提供程序启用Remember_me功能。假设您将其配置到public防火墙中,并且您的SecurityFactoryInterface实现的getKey()方法返回yourAuthProviderKey,则添加的配置参数可能如下所示:
    firewalls:
    public:
    yourAuthProviderKey:
    remember_me: true
  • 最后,当您的身份验证提供程序处理登录时,请确保通过在http请求中使用名为_remember_me的http GET或POST参数(值1)来请求“记住我”功能。 (但是请注意:如果您在安全配置中更改了其默认值,则此参数可能需要使用其他名称。)例如,在我的情况下,我必须告诉Facebook在处理身份验证后将其重定向到以下URL:http://www.mydomain.com/auth-callback/?_remember_me=1。 (注意?之后的部分)

  • 希望这可以帮助!

    关于symfony - 如何在Symfony 2中配置“记住我”的监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12799286/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com