0

这是我的情况:

我在 mi PluginAppController 中有一个 lang 函数,它可以更改语言环境并将其重定向到引用页面。

我有一个标志的图像菜单,用户也可以在其中单击它们以更改语言。

然后,因为我有一个身份验证系统,我想让用户只运行这个动作('lang')。

问题是我的系统采用了 URL,但它是引用 URL,因为在 lang 操作结束时我重定向到引用,所以我不能允许或拒绝这个操作。

我的语言动作代码:

public function lang($lang = 'spa'){
  $this->Session->write('Config.language', $lang);
  $this->redirect($this->referer());
}
4

1 回答 1

0

您想允许访问名为“lang”的操作吗?然后把它放在你的 beforeFilter 中(AppController,而不是你插件的 AppController)

$this->Auth->allow('lang')

当然,这是假设您的应用程序中没有使用该名称的其他操作,在这种情况下,您需要检查请求并确定它是否来自您的插件

if ($this->request->params['plugin'] == 'yourPlugin' && $this->request->params['controller'] == 'controllerOfYourPlugin') {
   $this->Auth->allow('lang');
}
于 2013-11-13T14:41:22.010 回答