【发布时间】:2015-12-29 15:22:51
【问题描述】:
我们有一个内置于 Symfony (CMF) 并使用 FOSUser 包的应用程序。我们要求对未完成某些任务的某些用户(例如未注册最新条款和条件的旧用户)实施“DMZ”。我们需要在允许这些用户完成任务之前验证这些用户(例如,在我们确定向他们展示哪些 T 和 C 之前先登录),但在他们完成任务之前,不得允许他们访问其帐户的其余部分(例如同意相关条款和条件)。为澄清起见,用户可能需要完成多项任务(例如,同意不同产品的不同 Ts & Cs),并且只有在完成所有任务后才能获得完全访问权限。
我们目前通过为每个帐户创建两个角色来做到这一点;一个用于“基本”帐户,另一个用于已完成所有相关步骤的帐户。这意味着在成功登录时添加(或删除)其中一个角色,并且感觉不是处理这种情况的最佳方法,因为这些并不是传统意义上的真正“角色”。
我们遇到的一个具体问题(我们目前正在酌情添加登录时的完整角色)是我们无法模拟这些用户,因为模拟机制会从数据库加载用户,并且只有在成功登录时才会授予完整角色并且数据库中不存在。
是否有公认的或规范的 Symfony 方法来实现这一点?我已经尝试过搜索引擎、Symfony 文档和 SO,但看不到任何关于这类事情的讨论。
【问题讨论】:
-
如何实现一个执行此检查的选民(这是否是一个好主意取决于检查所需权限的成本)?
-
@xabbuh 感谢您的建议,尽管我不确定它是否会增加我们已经在做的事情(我们正在使用登录成功处理程序来检查相关任务并相应地发布角色)。跨度>
-
@DipenShah 我真的不认为该解决方案与我们目前正在实施的解决方案有任何不同(我们已经在登录时动态添加或删除角色)。
标签: php symfony fosuserbundle