在控制器中,我有一个用于显示用户的操作。参数是要显示的用户,并通过参数转换器自动获取。 现在我想保护此操作(显示用户配置文件),以便只有具有USER_VIEW权限(当前实现为自定义选民)的用户才能访问。 使用@Security注释看起来像:
/**
* @Security("is_granted('USER_VIEW', user)")
*/
public function showAction(User $user) {...}
这不起作用,因为表达式中的用户变量引用了经过身份验证的用户而不是action参数。 The documentation提到了这一点,但这很不幸。
如何解决此问题并将$ user参数传递给安全表达式?我可以重命名它,但也许还有更好的事情要做。
我还想知道这是否应该被视为Symfony中的一个错误,因为'用户'是一个相当常见的词,也许它应该被重命名为更具体的词,例如“authenticated_user'或者' security_user'或者其他的东西。对于Symfony传递给表达式的其他3个变量也是如此:'令牌','请求','角色'。
感谢。