我是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 回答
看FosUserBundle
您可以轻松创建用户系统
如果用户已登录,您可以检入重定向的操作 . 如果是,则根据用户加载数据 . 例如您按用户ID加载所需的数据 .
因此每个用户都可以看到与自己相关的数据 .
您可以在此问题中找到有关用户身份验证处理的更多信息:How to check if an user is logged in Symfony2 inside a controller?