Symfony2>在公共路线中使用安全上下文(可能的替代)

时间:2013-12-21 10:41:14

标签: php security symfony

我有一个函数UserController:saveUserAction()。在整个系统中使用此功能,无论是否需要创建或修改用户实体。这可能发生在三个地方:

1)管理员面板→用户管理(系统管理员可以创建/修改用户) 2)会员仪表板→我的详细信息(用户可以编辑自己的详细信息) 3)注册(非用户可以注册并为他们创建用户)。

现在,某些字段只能由管理员设置,例如USER_ROLE。 (我不希望有人注册'黑客攻击'系统并以管理员身份注册自己)。通常if ($this->get('security.context')->isGranted('ROLE_ADMIN'))可以正常工作以确定用户是否是管理员,但看到saveUser()的路由是公开的(为了方便公众注册),我收到错误:

The security context contains no authentication token. One possible reason may be that there is no firewall configured for this URL.

是否有办法在公共路线上使用安全上下文,或者除了手动检查登录用户(如果有任何登录用户)具有哪些角色之外,还有某种替代方法,因为这样做非常麻烦见Symfony2 > Easier way to determine access

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我将路由放在防火墙下,并在security.yml中放置了一个异常,即匿名验证特定路由。 :)