Symfony - 安全/路由设置以启用受密码保护的用户页面
Posted
技术标签:
【中文标题】Symfony - 安全/路由设置以启用受密码保护的用户页面【英文标题】:Symfony - Security / routing setup to enable password protected user pages 【发布时间】:2016-11-06 05:13:54 【问题描述】:我对 Symfony 还是很陌生,虽然我已经设法建立了一个工作站点,具有基于角色的身份验证和防火墙,但我真的在努力研究如何构建一个允许用户登录和访问的系统只有他们和管理员才能访问的页面。
我真正想要的是一个动态安全角色,它使当前会话中的用户能够访问他们自己的私人页面并阻止其他所有人...
这是我的实际配置:
安全: 编码器:#define 用于编码密码的编码器 Symfony\Component\Security\Core\User\User:明文 IntuitByDesign\UserBundle\Entity\User: bcrypt 角色层次结构: ROLE_ADMIN:[ROLE_USER] 提供者: 链提供者: 链: 提供者:[in_memory,user_db] 在记忆中: 记忆: 用户: 管理员: 密码:adminpass,角色:ROLE_ADMIN 用户数据库: 实体:类:IntuitByDesignUserBundle:用户,属性:用户名 防火墙: 主要的: 注销:真 图案: /。* 表单登录: login_path: 登录 check_path: 登录 默认目标路径:/用户 登出: 路径:/注销 目标: / 安全性:真实 匿名:真实 访问控制: - 路径:/登录,角色:IS_AUTHENTICATED_ANONYMOUSLY - 路径:/注销,角色:IS_AUTHENTICATED_ANONYMOUSLY - 路径:/用户,角色:ROLE_ADMIN - 路径:/user-page/,角色:ROLE_USER - 路径:/.*,角色:IS_AUTHENTICATED_ANONYMOUSLY关于如何做到这一点的任何提示?
更新:登录后我想重定向只有特定登录用户才能看到的页面。
我认为可以通过将会话用户名与用户路径匹配来实现这一点?
【问题讨论】:
如果你是 Symfony 的新手,我可能会让你失望,但你可以使用选民来执行此操作:symfony.com/doc/current/cookbook/security/voters.html 但我强烈建议使用 FOSUserBundle。 symfony.com/doc/current/bundles/FOSUserBundle/index.html 你的问题到底是什么? 我的确切问题:我希望用户登录并被重定向到只有他们可以看到的用户页面。 【参考方案1】:如果用户已登录,您可以检查重定向的操作。如果是,则根据用户加载数据。例如您通过他的用户 ID 加载所需的数据。
所以每个用户都会看到与自己相关的数据。
您可以在此问题中找到有关用户身份验证处理的更多信息:How to check if an user is logged in Symfony2 inside a controller?
【讨论】:
【参考方案2】:看FosUserBundle
您可以轻松创建用户系统
【讨论】:
以上是关于Symfony - 安全/路由设置以启用受密码保护的用户页面的主要内容,如果未能解决你的问题,请参考以下文章
即使我在 react/redux 中使用受保护的路由设置了身份验证,我仍然会被注销?当我刷新页面时