如何保护应用程序中的任何服务或方法

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何保护应用程序中的任何服务或方法

在安全性文章中,您可以看到如何保护控制器通过请求ob娱乐下载\组件\安全\核心\授权\ AuthorizationCheckerInterface服务容器,检查当前用户的角色:

12 3 4 5 6 7 8 9 10 11 12
/ /……使用ob娱乐下载组件安全核心授权AuthorizationCheckerInterface使用ob娱乐下载组件安全核心异常AccessDeniedException公共函数你好(AuthorizationCheckerInterfaceauthChecker如果(!authChecker->isGranted (“ROLE_ADMIN”)) {AccessDeniedException ();}/ /……

你还可以确保任何服务,方法是将授权检查器服务注入其中。有关向服务中注入依赖项的一般介绍,请参见服务容器篇文章。例如,假设你有一个欧宝平台是合法的吗NewsletterManager类,它发送电子邮件,您希望将其使用限制为仅具有某些电子邮件的用户ROLE_欧宝平台是合法的吗NEWSLETTER_ADMIN的角色。在添加安全性之前,类看起来像这样:

12 3 4 5 6 7 8 9 10 11 12
/ / src欧宝平台是合法的吗 /通讯/ NewsletterManager.php名称空间应用程序欧宝平台是合法的吗通讯欧宝平台是合法的吗NewsletterManager公共函数send欧宝平台是合法的吗Newsletter()/ /……你在哪里工作/ /……

时检查用户的角色send欧宝平台是合法的吗Newsletter ()方法。实现这一目标的第一步是注入security.helper服务使用安全类:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/ / src欧宝平台是合法的吗 /通讯/ NewsletterManager.php/ /……使用ob娱乐下载组件安全核心异常AccessDeniedException使用ob娱乐下载组件安全核心安全欧宝平台是合法的吗NewsletterManager受保护的安全公共函数__construct(安全安全->安全=安全;}公共函数send欧宝平台是合法的吗Newsletter()如果(!->安全->isGranted (“ROLE_欧宝平台是合法的吗NEWSLETTER_ADMIN”)) {AccessDeniedException ();}/ /……/ /……

如果你在用默认的服务。yaml的配置, ob娱乐下载Symfony将自动通过security.helper感谢您的服务,感谢自动装配和安全type-hint。

如果当前用户没有ROLE_欧宝平台是合法的吗NEWSLETTER_ADMIN,系统会提示他们登入。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。