首页 文章

Symfony - 安全/路由设置,以启用受密码保护的用户页面

提问于
浏览
0

我是Symfony的新手,虽然我已经成功 Build 了一个工作站点,基于角色的身份验证和防火墙我正在努力研究如何构建一个允许用户登录并只能访问页面的系统他们和管理员可以访问 .

我真正想要的是一个动态安全角色,它使当前会话中的用户能够访问他们自己的私有页面并阻止其他人...

这是我的实际配置:

security:
    encoders: #define the encoders used to encode passwords
        Symfony\Component\Security\Core\User\User: plaintext
        IntuitByDesign\UserBundle\Entity\User: bcrypt
    role_hierarchy: 
        ROLE_ADMIN: [ROLE_USER] 
    providers:
        chain_provider:
            chain: 
                providers: [in_memory, user_db] 
        in_memory: 
            memory: 
                users:
                    admin: { password: adminpass, roles: ROLE_ADMIN }
        user_db: 
            entity: {class: IntuitByDesignUserBundle:User, property: username }    
    firewalls:
        main:
            logout: true
            pattern: /.* 
            form_login: 
                login_path: login
                check_path: login 
                default_target_path: /user 
            logout:
                path: /logout 
                target: / 
            security: true 
            anonymous: true 
    access_control: 
        - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
        - { path: /logout, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /user, roles: ROLE_ADMIN } 
        - { path: /user-page/,  roles: ROLE_USER}
        - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }

关于如何做到这一点的任何提示?

更新:登录后我想重定向只有特定登录用户才能看到的页面 .

我认为可以通过将会话用户名与用户路径匹配来实现这一目标?

2 回答

  • 0

    FosUserBundle

    您可以轻松创建用户系统

  • 0

    如果用户已登录,您可以检入重定向的操作 . 如果是,则根据用户加载数据 . 例如您按用户ID加载所需的数据 .

    因此每个用户都可以看到与自己相关的数据 .

    您可以在此问题中找到有关用户身份验证处理的更多信息:How to check if an user is logged in Symfony2 inside a controller?

相关问题