作者:123 | 来源:互联网 | 2022-12-02 12:39
我有一个非常类似的问题:Symfony记住我不工作,浏览器重启时COOKIE被销毁
不幸的是,他们的解决方案并没有在Symfony 4中修复它.
用户登录后,将创建COOKIE"REMEMBERME".如果我重新启动浏览器,我仍然可以看到我的COOKIE,但是当我访问安全性下的页面时IS_AUTHENTICATED_REMEMBERED
,它不起作用,我被重定向到登录页面,然后销毁COOKIE并且用户必须再次登录.
我一直在开发官方文档中解释的身份验证过程(实际上,没有花哨的定制,没有FOSUSERBUNDLE).
您可以在文档中找到我的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 }
我的登录功能也在文档中详细说明
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,
]);
}
我试图取代ROLE_USER
的IS_AUTHENTICATED_REMEMBERED
在我的路线(我不明白究竟是什么区别寿我看了他们的文档 吧),但什么都没有改变.COOKIE在这里,但它仍然无法帮助我保持登录状态.
这里的任何帮助非常感谢.我很想在我的应用程序上记住我的功能.非常感谢.