我在cakePHP应用程序中有一个if语句,我无法弄清楚为什么它没有做我期望的事情。
public function isAuthorized($user) {
if ($user['role'] === 'admin'){
return true;
}
if ((in_array($this->action, array('view', 'index')))&&($user['role'] === 'senior' || 'junior')) {
return true;
}
return false;
}
我希望如果有一个角色为“代理”的用户,它将拒绝所有操作。
如果我使用它而不是everthing,那就不确定为什么在将布尔值设置为True之前不检查两个参数?
public function isAuthorized($user) {
if ($user['role'] === 'admin'){
return true;
}
if ($user['role'] == 'agent'){
return false;
}
if (in_array($this->action, array('edit', 'add', 'delete'))) {
if ($user['role'] == 'senior' || 'junior') {
return false;
}
}
return true;
}
任何想法? 感谢
答案 0 :(得分:2)
你的一个测试是错误的,总是评估为真。
if($user['role'] === 'senior' || 'junior'){
//will always be true
}
因为您正在将'junior'
评估为布尔值,这在PHP中是正确的。
你的病情应该是:
if($user['role'] == 'senior' || $user['role'] == 'junior'){
...
}
请注意,您也可以这样写:
if(in_array($user['role'], array('senior', 'junior'))){
}