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 次 |
| 最近记录: |