如何确保您的应用程序的服务或方法吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.4,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何确保您的应用程序的服务或方法吗

在安全的文章中,你可以看到如何安全控制器通过请求security.authorization_checker服务从服务容器和检查当前用户的角色:

1 2 3 4 5 6 7 8 9
/ /……使用欧宝娱乐app下载地址\组件\安全\核心\异常\AccessDeniedException;公共函数helloAction(美元的名字){美元- >denyAccessUnlessGranted (“ROLE_ADMIN”);/ /……}

你也可以安全任何服务通过注射security.authorization_checker服务。对于一般的介绍将依赖项注入服务看到服务容器篇文章。例如,假设您有一个欧宝app在哪里找NewsletterManager类,发送电子邮件和你想进行限制,使其仅用于用户一些ROLE_欧宝app在哪里找NEWSLETTER_ADMIN的角色。你添加安全之前,类是这样的:

1 2 3 4 5 6 7 8 9 10 11 12
/ / src / AppBund欧宝app在哪里找le /通讯/ NewsletterManager.php名称空间AppBundle\欧宝app在哪里找通讯;欧宝app在哪里找NewsletterManager{公共函数send欧宝app在哪里找Newsletter(){/ /……你在哪里工作}/ /……}

你的目标是检查时用户的角色send欧宝app在哪里找Newsletter ()方法被调用。第一步是注入security.helper服务使用安全类:

1 2 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 / AppBund欧宝app在哪里找le /通讯/ NewsletterManager.php/ /……使用欧宝娱乐app下载地址\组件\安全\核心\异常\AccessDeniedException;使用欧宝娱乐app下载地址\组件\安全\核心\安全;欧宝app在哪里找NewsletterManager{受保护的美元安全;公共函数__construct(安全美元安全){美元- >安全=美元安全;}公共函数send欧宝app在哪里找Newsletter(){如果(!美元- >安全- >isGranted (“ROLE_欧宝app在哪里找NEWSLETTER_ADMIN”)){AccessDeniedException ();}/ /……}/ /……}

如果你使用默认的服务。yml配置,S欧宝娱乐app下载地址ymfony会自动通过security.helper由于自动装配和你的服务安全type-hint。

如果当前用户没有ROLE_欧宝app在哪里找NEWSLETTER_ADMIN,他们将被提示登录。

保护方法使用注释

你也可以安全的方法调用的任何服务通过使用可选注释JMSSecurityExtraBundle包。这个包不包括在Symfony标准分布,但你可以选择安装它。欧宝娱乐app下载地址

看到JMSSecurityExtraBundle文欧宝体育电话档为更多的细节。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。