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 $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>
私はどこにも行きません。
ここにもう少し情報があります: http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_sub_complex_credentials
それによると、上記の3回目の試行[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
ここに回答として一時的な回避策を投稿します。みんなありがとう。