我在 security.yml 中保护一个动作。如果用户具有凭据(A 和 B)或(A 和 C),我希望用户能够访问。查看相当稀疏的文档,我尝试了这些组合:
myaction:
credentials: [[A, B], [A, C]]
credentials: [[[A, B], [A, C]]]
credentials: [A, [B, C]]
它们都不起作用;[A, B]
有效,但这只是成功的一半。有没有人有这样的工作?
我正在使用 Propel 1.4.2 和 sfActionCredentialsGetterPlugin。感谢您的输入。
编辑:
我在没有使用 sfActionCredentialsGetterPlugin 的情况下进行了测试,只是在模板中直接使用 php:
<?php $sf_user->addCredentials('A', 'C'); ?>
<?php var_dump($sf_user->getCredentials()->getRawValue()) ?><br><br><br>
<?php $cred_a = 'A'; ?>
<?php $cred_b = 'B'; ?>
<?php $cred_c = 'C'; ?>
<?php $cred_3 = array('B', 'C'); ?>
<?php $has_cred1 = $sf_user->hasCredential(array($cred_a, $cred_3)) ? 'true' : 'false' ?>
<?php $has_cred2 = $sf_user->hasCredential($cred_a, $cred_b) ? 'true' : 'false' ?>
<?php echo 'has cred1? '.$has_cred1 ?><br><br>
<?php echo 'has cred2? '.$has_cred2 ?><br><br>
我哪儿也去不了。
据此,我上面的第三次尝试[A, [B, C]]
应该有效!
任何人?
编辑2:
我尝试了从文档中复制的简单 OR 组合:
// security.yml:
credentials: [[A, B]]
// template:
$sf_user->hasCredential(array('A', 'B'), false)
再次,没有骰子。我发布了一个错误报告:http: //trac.symfony-project.org/ticket/10036
我将在此处发布我的临时解决方法作为答案。多谢你们。