【发布时间】:2017-07-18 18:20:30
【问题描述】:
我正在关注How to Add "Remember Me" Login Functionality,这应该是直截了当的,但不是这样。
我还检查了this question 等。
我检查了登录表单是否正确地发布了 _remember_me 字段,但 Symfony 不知何故没有拦截它并创建 cookie。
我参加了我相信设置 cookie 的课程,/vendor/symfony/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeService.php,但那里似乎什么都没有发生。我试图 var_dump 或在会话变量上放置一些构建 cookie 的参数,但无济于事。
这样的登录工作正常。
我正在使用 Guard Authenticator。
代码如下:
security.yml
security:
encoders:
UsedBundle\Entity\User:
algorithm: bcrypt
providers:
db_provider:
entity:
class: UsedBundle:User
property: email
manager_name: used
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
provider: db_provider
form_login:
login_path: /
username_parameter: _email
check_path: /login_check
use_referer: true
guard:
authenticators:
- app.form_login_authenticator
logout:
path: /logout
target: /
remember_me:
secret: '%secret%'
secure: false #change this to true if HTTPS
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
登录表单:
{% if error is defined and error is not null %}
{{ dump(error) }}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% else %}
<form action="" method="post" name="login_form" id="login_form" >
<div class="contact" >
<input type="email" id="email" name="_email" class="form-control" placeholder="e-mail" value="{% if last_username is defined %}{{ last_username }} {% endif %}" />
</div>
<div class="contact" >
<input type="password" id="password" name="_password" placeholder="mot de passe" />
</div>
<div id="captcha_signup"></div>
<div id="remember_me">
<label for="remember">Se souvenir de moi </label>
<input type="checkbox" id="remember_me" name="_remember_me" />
<p id="a_recovery">mot de passe oubliée?</p>
</div>
<div>
<button type="submit" class="sub_ok btn" name="submit" >Valider</button>
</div>
</form>
{% endif %}
【问题讨论】:
标签: php symfony cookies remember-me