在 Symfony 3.3 中检查安全性的位置

Where to check security in Symfony 3.3

我用 Symfony 3.3 写了一个没有 FOSUserBundle 的应用程序。 典型流程是以下之一:

最初我将所有 isGranteddenyAccessUnlessGranted 调用都放在服务中,但是当我从命令使用服务时,这变得很混乱。我通过 get('security.token_storage')->setToken($token) 对用户进行身份验证来破解命令,但它看起来有点乱。

因为除了 'hello world' 个例子我没有找到任何东西,所以我在这里问这个:

是否有关于在何处执行安全检查的最佳实践?它们应该在控制器和命令内部还是在服务内部?

我会在控制器中进行安全检查。 假设您有一个控制器操作,它调用某些服务来修改某些实体。该修改只能由特定类型的用户完成。 将用户从控制器传递到服务,然后检查用户是否被授权执行某些操作是没有意义的。 一开始就剪掉。