【问题标题】:Remember me Functionality is not working in Symfony2记住我功能在 Symfony2 中不起作用
【发布时间】:2015-01-24 15:18:20
【问题描述】:

我根据 security.yml 中的 symfony 2 文档完成了更改,但它不起作用。不知道哪里破了。注销后,它不会在登录表单的输入框中呈现用户名。请帮帮我。

security.yml 文件:

安全性: 编码器: trex\EntityBundle\Entity\Users:明文

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    main:
        entity:
            class: trex\EntityBundle\Entity\Users
            property: username

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern:  ^/login$
        security: false

    deteleRole:
        pattern:  ^/role/deleteRole$
        security: false

    #deteleCandidate:
       # pattern:  ^/candidates/delete$
       # security: false

    deteleUser:
        pattern:  ^/users/delete$
        security: false

    forgotPassword: 
       pattern: ^/forgot-password$
       security: false

    secured_area:
        pattern:    ^/
        form_login:
            check_path: login_check
            login_path: login
            default_target_path: default_security_target
            remember_me: true
        logout:
            path:   logout
            target: login
        remember_me:
            key: trex-kharadi6
            lifetime: 604800
            always_remember_me: true
            remember_me_parameter: _remember_me
            path: /
            domain: ~

access_control:
    - { path: ^/secured_area, roles: ROLE_ADMIN }
    - { path: ^/secured_area, roles: ROLE_ADMIN }
    #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

这是我的 login.html.twig

                    <div class="input-prepend"  data-rel="tooltip" style="margin-left: -12%; width:75%;">
                        <label class="control-label" for="focusedInput">Username <span class="red">*</span></label>
                        <input autofocus class="input-large span10" name="_username" data-validation="required" id="username" type="text" value="{{ last_username }}" style="float:left; width:55%; margin-left:5%;" />
                    </div>
                    <div class="clearfix"></div>

                    <div class="input-prepend"  data-rel="tooltip" style="margin-left: -12%; width:75%;">
                        <label class="control-label" for="focusedInput">Password <span class="red">*</span></label>
                        <input class="input-large span10" name="_password" id="password" data-validation="required" type="password" style="float:left; width:55%; margin-left:5%;" />                               
                    </div>
                    <div class="clearfix"></div>
                    <div class="input-prepend">
                        <label class="remember" for="remember"><input type="checkbox" name="_remember_me" id="remember_me" checked/>Remember me &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="{{path('forgotPassword')}}">Forgot password?</a></label>
                    </div>


                    <p class="center span5">
                        <button type="submit" class="btn btn-primary" style="width:45%;">Login</button>
                    </p>

                </fieldset>
            </form> 

【问题讨论】:

    标签: symfony symfony-2.1 symfony-2.3


    【解决方案1】:

    此功能不适用于在登录表单的输入框中呈现用户名。

    记住我的功能是允许用户使用 cookie 保持登录的时间超过会话持续时间。如果用户在登录时勾选记住我复选框,cookie 将保存在浏览器中,下次访问该站点时,他将自动登录。如果用户退出,他必须再次通过表单重复登录过程

    【讨论】:

    • 我需要的是当用户点击记住我复选框并登录时,注销后他的用户名应该反映在登录屏幕的用户名字段中。我怎么能做到这一点??
    • 您可以将用户名保存在 cookie 中,并在呈现登录表单时检查该 cookie 并打印用户名(如果存在)。但是,这与登录表单中的记住我复选框无关。
    猜你喜欢
    • 2015-10-10
    • 2014-08-02
    • 2015-07-13
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2015-04-23
    相关资源
    最近更新 更多