这是我的情况:
我在mi PluginAppController中有一个lang函数,它改变了语言环境语言,并被重定向到referer页面。
我有一个标志的图像菜单,用户可以对它们进行clic来改变语言。
然后,因为我有一个身份验证系统,我想允许用户只运行此操作('lang')。
问题是我的系统获取了URL,但它是引用URL,因为在lang操作结束时我重定向到引用者,因此我不能允许或拒绝此操作。
我的行动代码:
public function lang($lang = 'spa'){
$this->Session->write('Config.language', $lang);
$this->redirect($this->referer());
}
答案 0 :(得分:0)
您是否允许访问名为“lang”的操作? 然后把它放在你的beforeFilter(AppController,而不是你的插件的AppController)
中$this->Auth->allow('lang')
当然,这假设你的应用程序中没有其他具有该名称的操作,在这种情况下,您需要检查请求并确定它是否来自您的插件
if ($this->request->params['plugin'] == 'yourPlugin' && $this->request->params['controller'] == 'controllerOfYourPlugin') {
$this->Auth->allow('lang');
}