如何保护应用程序中的任何服务或方法
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何保护应用程序中的任何服务或方法
在安全性文章中,您可以看到如何保护控制器通过请求ob娱乐下载
服务容器,检查当前用户的角色:
12 3 4 5 6 7 8 9 10 11 12
/ /……使用ob娱乐下载\组件\安全\核心\授权\AuthorizationCheckerInterface;使用ob娱乐下载\组件\安全\核心\异常\AccessDeniedException;公共函数你好(AuthorizationCheckerInterface$authChecker){如果(!$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许可证。