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 に答える