脚本宝典收集整理的这篇文章主要介绍了php – 根据特定客户端ID过滤对控制器操作的访问的最佳方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_8@
我的所有对象(当然除了组)都有client_id键.@H_502_8@
现在,我知道一种方法可以完成这项工作,并且实际上它运行良好,但它看起来有点脏,我想知道是否有更好的方法.在项目的早期和CakePHP的新手,我渴望得到正确的.@H_502_8@
1-用户登录.他的client_id根据用户表中的数据写入会话.@H_502_8@
@H_502_8@
$user = $this->User->read(null,$this->Auth->user('id')); $this->Session->wrITe('User.client_id',$user['User']['client_id']);
2-在AppController中,我有一个受保护的函数,它将该会话ID与给定参数进行比较.@H_502_8@
@H_502_8@
PRotected function clientCheck($client_id) { if ($this->Session->read('User.client_id') == $client_id) { return true; } else { $this->Session->setFlash(__('Invalid object or view.')); $this->redirect(array('controller' => 'user','action' => 'home')); } }
3-我的不同索引操作(每个索引,每个相关的控制器),我使用分页条件检查client_id.@H_502_8@
@H_502_8@
public function index() { $this->User->recursive = 0; $this->paginate = array( 'conditions' => array('User.client_id' => $this->Session->read('User.client_id')) ); $this->set('users',$this->paginate()); }
4-在其他操作中,我在检查HTTP请求类型之前检查client_id.@H_502_8@
@H_502_8@
$user = $this->User->read(null,$id); $this->clientCheck($user['User']['client_id']); $this->set('user',$user);
@H_502_8@
@H_502_8@
$this->Auth->user('id')
该方法实际上可以为登录用户获取任何字段,因此您可以执行以下操作:@H_502_8@
@H_502_8@
$this->Auth->user('client_id')
你的两行:@H_502_8@
@H_502_8@
$user = $this->User->read(null,$user['User']['client_id']);
不需要.您无需重新读取用户或向会话写入任何内容 – 只需在您需要时直接从Auth获取client_id.@H_502_8@
事实上,如果您阅读http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#accessing-the-logged-in-user,它甚至表示您可以从控制器的上下文之外获取它,使用静态方法,如:@H_502_8@
@H_502_8@
Authcomponent::user('client_id')
虽然看起来你似乎不需要那样.@H_502_8@
以上是脚本宝典为你收集整理的php – 根据特定客户端ID过滤对控制器操作的访问的最佳方法全部内容,希望文章能够帮你解决php – 根据特定客户端ID过滤对控制器操作的访问的最佳方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。