用户注册后Symfony2自动登录

 memeyun916 发布于 2023-02-11 17:19

我已经看到了这方面的一些帖子,特别是通过URL使用symfony2自动登录(我不能使用,因为我不知道需要进入$ request)和自动注册后用户身份验证.我尝试了后者,但它没有登录.

来自security.yml的代码

 firewalls:
    admin_login_firewall:
      pattern:    ^/admin/login$
      anonymous:  ~
    admin:
        pattern:    ^/admin
        form_login:
            login_path:  admin_login
            check_path:  admin_login_check
            default_target_path: admin_dashboard  
        logout:
            path:   admin_logout
            target: admin_login
        http_basic:
            realm: "Licensing Admin Portal"
    member_login_firewall:
      pattern:    ^/members/login$
      anonymous:  ~
    members:
        pattern:    ^/members
        form_login:
            login_path:  member_login
            check_path:  member_login_check
            default_target_path: member_dashboard  
        logout:
            path:   member_logout
            target: home
        http_basic:
            realm: "Licensing Member Portal"        


encoders:
    Pmb\LicensingBundle\Entity\User: plaintext

access_control:
    - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/members/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/members/, roles: ROLE_USER }

来自Controller函数saveUserAction()的代码片段:

    ... // Code preceding this point creates user entity and sets all fields
    $em = $this->getDoctrine()->getManager();
    if (empty($data['user_id'])) $em->persist($user);
    $em->flush();

    if (!empty($organization)) $this->linkOrganizationUserAction($organization,$user, true);

    if (isset($data['registering']))
    {
        $token = new UsernamePasswordToken($user, null, 'members', $user->getRoles());
        $this->get('security.context')->setToken($token);
        $this->get('session')->set('_security_main',serialize($token));
    }

    return $this->createJsonResponse($user);

我正在尝试登录成员防火墙.我对此不太了解以进行故障排除.大部分只是复制/粘贴/编辑.任何帮助/解释将不胜感激.我也在注册后阅读Symfony2自动登录下的文章,但我没有看到这个的重要性,因为我不需要让用户登录不同的防火墙,只需要用户登录成员防火墙.

我注意到的一件事是,当持久化到数据库时,用户实体正在填充其salt字段,即使我没有设置盐并且我看不到任何自动设置salt的内容.我还没有使用salt,因为我还没有加密我的密码(只是试图让它首先使用纯文本密码),并且在尝试使用创建的用户登录时(确实创建了用户,但是没有登录)除非我清除用户的盐,否则我无法登录.我不知道这是否与自动登录无效有关.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有