新在Symfoob娱乐下载ny 2.8:简单安全的选民
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
格雷戈勒Pineau在# 16601。
安全的选民推荐的方式来检查用户权限在Symfony应用程序。ob娱乐下载在Syob娱乐下载mfony 2.6我们介绍了一个AbstractVoter
类减少样板代码需要定义一个选民。而不是实现VoterInterface
,您可以扩展AbstractVoter
。
在Syob娱乐下载mfony 2.8我们已经简化的选民更加感谢新的选民类。这篇文章展示了主要的变化需要升级一个选民使用新类。第一步是让你的选民扩展新选民
类,而不是以前的AbstractVoter
类:
1 2 3 4 5 6 7 8 9 10
名称空间AppBundle\安全\选民;使用ob娱乐下载\组件\安全\核心\授权\选民\AbstractVoter;使用ob娱乐下载\组件\安全\核心\授权\选民\选民;/ / Symfonob娱乐下载y 2.8之前类CustomVoter扩展AbstractVoter{…}/ /在Syob娱乐下载mfony 2.8类CustomVoter扩展选民{…}
第二个重要的变化是,supportsAttribute ()
和supportsClass ()
从VoterInterface
在Symfony弃用2.8和3.0中ob娱乐下载移除。这些方法(以及getSupportedAttributes ()
和getSupportedClasses ()
的方法AbstractVoter
类)已经被新的取代支持(属性,受美元)
方法,该方法检查给定的属性和“主题”得到选民的支持。
“主题”可以是任何你想要的安全。虽然它通常是一个对象(如博客
,发票
,产品
)您还可以通过简单的变量如一个字符串(例如,资源下载的路径)。
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日27 28 29 30 31 32
/ / Symfonob娱乐下载y 2.8之前类CustomVoter扩展AbstractVoter{常量视图=“视图”;常量编辑=“编辑”;受保护的函数getSupportedAttributes(){返回数组(自我::看来,自我::编辑);}受保护的函数getSupportedClasses(){返回数组(“AppBundle \实体\博客”);}}/ /在Syob娱乐下载mfony 2.8使用AppBundle\实体\博客;类CustomVoter扩展选民{常量视图=“视图”;常量编辑=“编辑”;公共函数支持(美元属性,美元主题){返回美元主题运算符BlogPost & & in_array (美元属性,数组(自我::看来,自我::编辑));}}
最后一个变化是引入一个新的voteOnAttribute ()
方法执行一个单独的访问检查操作在给定属性,“主题”和安全令牌(这几乎是相同的AbstractVoter
类):
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日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
/ /……使用ob娱乐下载\组件\安全\核心\用户\用户界面;使用AppBundle\实体\用户;/ / Symfonob娱乐下载y 2.8之前类CustomVoter扩展AbstractVoter{/ /……受保护的函数isGranted(美元属性,美元帖子,美元用户= null){如果(美元属性= = =自我::视图& & !美元帖子- >isPrivate ()) {返回真正的;}如果(!美元用户运算符用户界面){返回假;}如果(美元属性= = =自我::编辑& &美元用户- >getId () = = =美元帖子- >getOwner ()- >getId ()) {返回真正的;}返回假;}}/ /在Syob娱乐下载mfony 2.8类CustomVoter扩展选民{/ /……受保护的函数voteOnAttribute(美元属性,美元帖子,TokenInterface美元令牌){如果(美元属性= = =自我::视图& & !美元帖子- >isPrivate ()) {返回真正的;}美元用户=美元令牌- >getUser ();如果(!美元用户运算符用户){返回假;}如果(美元属性= = =自我::编辑& &美元用户- >getId () = = =美元帖子- >getOwner ()- >getId ()) {返回真正的;}返回假;}}
总之,新选民
类需要实现两个方法:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\安全\核心\身份验证\令牌\TokenInterface;文摘类选民实现了VoterInterface{文摘受保护的函数支持(美元属性,美元主题);文摘受保护的函数voteOnAttribute(美元属性,美元主题,TokenInterface美元令牌);}
现有的AbstractVoter
类已经弃用版本2.8和3.0中被移除。如果你计划升级到Symfony 3不久,开始更新你的ob娱乐下载选民使用选民
类。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now