gpt4 book ai didi

php - Symfony 4 Remember Me 不起作用,浏览器重启时 cookie 被破坏

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:19 28 4
gpt4 key购买 nike

我有一个非常类似于的问题:Symfony Remember Me doesn't work, the cookie is destroyed when browser reboot

不幸的是,他们的解决方案并没有在 Symfony 4 中修复它。

用户登录后,将创建 cookie“REMEMBERME”。如果我重新启动我的浏览器,我仍然可以看到我的 cookie 但是当我访问安全 IS_AUTHENTICATED_REMEMBERED 下的页面时,它不起作用并且我被重定向到登录页面,然后 cookie 被销毁并且用户必须重新登录。

我一直在按照官方文档中的说明开发身份验证过程(实际上,没有花哨的定制,没有 FOSUSERBUNDLE)。

您可以在 documentation 中找到我构建的 service.yaml

security:
encoders:
App\Entity\User:
algorithm: bcrypt
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
in_memory: { memory: ~ }
our_db_provider:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
http_basic: ~
provider: our_db_provider
anonymous: ~
form_login:
login_path: login
check_path: login
default_target_path: dashboard
remember_me:
secret: '%kernel.secret%'
lifetime: 604800 # 1 week in seconds
path: /
secure: true
name: REMEMBERME
remember_me_parameter: _remember_me
logout:
path: /logout
target: /
secured_area:
form_login:
csrf_token_generator: security.csrf.token_manager
provider: our_db_provider
logout:
path: /logout
target: /

role_hierarchy:
ROLE_ADMIN: ROLE_USER
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, roles: IS_AUTHENTICATED_REMEMBERED }

我的登录功能很详细in the documentation as well

public function login(Request $request, AuthenticationUtils $authenticationUtils)
{
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();

// last username entered by the user
$lastEmail = $authenticationUtils->getLastUsername();

return $this->render('platform/user/login.html.twig', [
'last_email' => $lastEmail,
'error' => $error,
]);
}

我试图在我的 route 用 IS_AUTHENTICATED_REMEMBERED 替换 ROLE_USER(我不明白这到底有什么区别 I read their doc 关于它)但没有任何改变。 cookie 在这里,但它仍然无法帮助我保持登录状态。

非常感谢这里的任何帮助。我很想在我的应用程序上使用记住我的功能。非常感谢。

最佳答案

如果 cookie 可用但您未成功通过身份验证,也许检查您的身份验证测试(!)是否正常?

IS_AUTHENTICATED_REMEMBERED 为真,但 IS_AUTHENTICATED_FULLY 为假,因为第二个不包括已通过记住我 cookie 身份验证的用户。

(再次阅读 doc 并更改您的身份验证检查代码)

也检查其他事情:

  • 你有没有做/强制reauthentication
  • 登录表单包含 crfs token 和记住我复选框?
  • 检查所有其他记住me parameters太(更改默认值)
  • 上次使用的用户名是否成功填写在登录表单中?

关于php - Symfony 4 Remember Me 不起作用,浏览器重启时 cookie 被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803295/

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