Php Symfony 4记住我不';当浏览器重新启动时,cookie将被破坏
我有一个非常类似的问题: 不幸的是,他们的解决方案无法在Symfony 4中修复它 用户登录后,将创建cookie“REMEMBERME”。如果我重新启动浏览器,我仍然可以看到我的cookie,但是当我访问安全Php Symfony 4记住我不';当浏览器重新启动时,cookie将被破坏,php,authentication,cookies,fosuserbundle,symfony4,Php,Authentication,Cookies,Fosuserbundle,Symfony4,我有一个非常类似的问题: 不幸的是,他们的解决方案无法在Symfony 4中修复它 用户登录后,将创建cookie“REMEMBERME”。如果我重新启动浏览器,我仍然可以看到我的cookie,但是当我访问安全下的页面时,它不起作用,我被重定向到登录页面,cookie随后被销毁,用户必须再次登录 我一直在开发官方文档中解释的身份验证过程(实际上,这本书没有特别的定制,没有FOSUSERBUNDLE) 你可以找到我的服务。yaml像 我的登录功能如下所示 在我的路线中,我试图用是否经过身份验证替换
下的页面时,它不起作用,我被重定向到登录页面,cookie随后被销毁,用户必须再次登录
我一直在开发官方文档中解释的身份验证过程(实际上,这本书没有特别的定制,没有FOSUSERBUNDLE)
你可以找到我的服务。yaml像
我的登录功能如下所示
在我的路线中,我试图用是否经过身份验证
替换角色用户
(我不知道到底有什么区别),但没有任何改变。cookie在这里,但它仍然不能帮助我保持登录状态
非常感谢您的帮助。我很想在我的应用程序上使用“记住我”功能。非常感谢。如果cookie可用,但您未成功通过身份验证,请检查您的身份验证测试(!)是否正常
IS_AUTHENTICATED_membered将为true,但IS_AUTHENTICATED_FULLY将为false,因为第二个选项排除了通过Rememberd me cookie身份验证的用户
(再次阅读并更改身份验证检查器代码)
还要检查其他事项:
- 你做了/强迫了吗
- 登录表单包含crfs令牌和“记住我”复选框
- 同时选中所有其他选项(更改默认值)
- 上次使用的用户名是否已成功填写在登录表单中
为什么您的安全区域
防火墙没有模式?甚至需要它吗?:)谢谢你的评论@nifr,但你不需要它。我听不懂。您的secured_区域
防火墙不受您提供的配置中的主机、模式或方法的限制。因此,基本上这两个防火墙都匹配每个url,因此根本不使用secured_区域
防火墙,因为只有一个防火墙是主动应用的,这是第一个匹配的防火墙。因此,您提供的secured\u area
防火墙配置不完整、配置错误或不必要。你明白我的意思吗?对不起,我不太明白。你认为防火墙是cookie的问题吗?因为在其他情况下,它工作得很好。您确认浏览器设置不是cookie丢失的原因吗?谢谢您,当转到角色:是否经过身份验证\u记住下的页面时,它不工作。我不知道为什么。浏览器中有cookie,但不幸的是,什么也没有发生。然后,根据配置,我被重定向到登录,然后删除cookie。回答您的问题:我不要求是否经过完全验证,因此没有重新验证。此外,登录表单中有“是”叉号,此处有“记住我”复选框,默认情况下已选中。我检查了所有其他参数,我觉得很好。我认为上次使用的用户名没有成功填写在登录表单tho中,我不知道你检查我的身份验证测试是什么意思?谢谢
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,
]);
}