在 Symfony 3.3 中检查安全性的位置
Where to check security in Symfony 3.3
我用 Symfony 3.3
写了一个没有 FOSUserBundle
的应用程序。
典型流程是以下之一:
- 控制器 => 服务 => 存储库 => 实体
- 命令 => 服务 => 存储库 => 实体
最初我将所有 isGranted
和 denyAccessUnlessGranted
调用都放在服务中,但是当我从命令使用服务时,这变得很混乱。我通过 get('security.token_storage')->setToken($token)
对用户进行身份验证来破解命令,但它看起来有点乱。
因为除了 'hello world' 个例子我没有找到任何东西,所以我在这里问这个:
是否有关于在何处执行安全检查的最佳实践?它们应该在控制器和命令内部还是在服务内部?
我会在控制器中进行安全检查。
假设您有一个控制器操作,它调用某些服务来修改某些实体。该修改只能由特定类型的用户完成。
将用户从控制器传递到服务,然后检查用户是否被授权执行某些操作是没有意义的。
一开始就剪掉。
我用 Symfony 3.3
写了一个没有 FOSUserBundle
的应用程序。
典型流程是以下之一:
- 控制器 => 服务 => 存储库 => 实体
- 命令 => 服务 => 存储库 => 实体
最初我将所有 isGranted
和 denyAccessUnlessGranted
调用都放在服务中,但是当我从命令使用服务时,这变得很混乱。我通过 get('security.token_storage')->setToken($token)
对用户进行身份验证来破解命令,但它看起来有点乱。
因为除了 'hello world' 个例子我没有找到任何东西,所以我在这里问这个:
是否有关于在何处执行安全检查的最佳实践?它们应该在控制器和命令内部还是在服务内部?
我会在控制器中进行安全检查。 假设您有一个控制器操作,它调用某些服务来修改某些实体。该修改只能由特定类型的用户完成。 将用户从控制器传递到服务,然后检查用户是否被授权执行某些操作是没有意义的。 一开始就剪掉。