Fra*_*ste 4 acl authorization symfony
我在 GitHub 上看到默认配置使用优先级标签,如下所示:
<service id="security.access.simple_role_voter" class="%security.access.simple_role_voter.class%" public="false">
<tag name="security.voter" priority="245" />
</service>
Run Code Online (Sandbox Code Playgroud)
我在AccessDecisionManager本身中找不到对这个“优先级”的任何引用。
priority
设置对决策过程有什么影响?
优先级较高的侦听器/投票者首先被执行。
以下规则适用于侦听器优先级:
优先级 [...] 默认为 0。
该值可以从 -255 到 255,并且侦听器将按照其优先级(从高到低)的顺序执行。
(请参阅:如何创建事件侦听器。)
应用程序/配置/security.yml
该security.access_decision_manager
设置定义了用于最终决策的策略:
security:
access_decision_manager:
strategy: affirmative # <- strategy setting
Run Code Online (Sandbox Code Playgroud)
有3种策略可用:
unanimous
- 1 个单一选民拒绝访问。affirmative
- 1 位单一选民授予访问权限。consensus
- 多数获胜。(请参阅:更改访问决策策略)
选民的决定由其方法的返回值表示vote()
。例子:
use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
public function vote(TokenInterface $token, $post, array $attributes)
{
// ...
return VoterInterface::ACCESS_GRANTED;
}
Run Code Online (Sandbox Code Playgroud)
VoterInterface::ACCESS_GRANTED
授权将由该选民授予;VoterInterface::ACCESS_ABSTAIN
选民无法决定是否应授予授权;VoterInterface::ACCESS_DENIED
该选民将拒绝授权。(参见:如何使用投票者检查用户权限)
归档时间: |
|
查看次数: |
1510 次 |
最近记录: |