0

CakePHP Auth loginRedirect エラー/常に「users/login」にリダイレクトしますが、別のコントローラーを配置します。つまり、禁止されたページを開いたとき(許可されていない/ログインが必要)

$this->Auth->allow('index', 'profile', 'view', 'register');

「players/index」にリダイレクトする必要があります。loginRedirect を「players」に配置し、

'loginRedirect' => array('controller' => 'Players', 'action' => 'index'),

しかし、うまくいきません。それは常に「players/index」ではなく「users/login」にリダイレクトしますが、「'loginRedirect' => array('controller' => 'Players', 'action' => 'index')」と書いています。

これは私のコードです:

class AppController extends Controller {
public $components = array(
    'Session',
    'Auth'=>array(
        'loginRedirect' => array('controller' => 'Players', 'action' => 'index'),
        'logoutRedirect' => array('controller' => 'Players', 'action' => 'index'),
        'authError'=>"Anda tidak dapat mengakses halaman.",
        'authorize'=>array('Controller')
    )
);

public function isAuthorized($user) {
    return true;
}

public function beforeFilter() {
    $this->Auth->allow('index', 'profile', 'view', 'register');
    $this->set('logged_in', $this->Auth->loggedIn());
    $this->set('current_user', $this->Auth->user());
}}

私のテーブルの名前: プレーヤー

結果が常に「players/」や「players/index」ではなく「users/login」にリダイレクトされるのはなぜですか? なぜこれが起こるのか、どうすれば解決できるのか教えてください。ありがとうございました!

4

5 に答える 5

4

私は何時間も同じ問題で立ち往生していました。beforeFilterのログインアクションAppControllerを次のように設定します。

$this->Auth->loginAction = array('controller'=>'yourcontollername', 'action'=>'login');

私はビデオyoutube.com/watch?v=zvwQGZ1BxdMをフォローしました。最初の返信を参照してください。

于 2012-11-29T04:02:39.443 に答える
2

コントローラー名を小文字にしようとしましたか? プレイヤー => プレイヤー

'loginRedirect' => array('controller' => 'players', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'players', 'action' => 'index'),
于 2012-09-16T19:13:49.453 に答える
0

非常に興味深いことに、同様の問題に遭遇しました-ログイン後、デフォルトのホームページにリダイレクトされます。上記の方法をすべて試しましたが、どれも問題を解決できませんでした。

最後に、アクションとコントローラーが設定されていないログインフォームが正しく構築されていないことがわかりました。したがって、投稿時に html フォームが「/」を指していました。ただし、システムは引き続き正しいアカウントにログインできましたが、この状況ではリダイレクト機能は機能しませんでした。

それはあなたが調べる必要があるものかもしれません。

幸運を。

于 2013-08-15T08:55:41.087 に答える
0

その答えは、AppController.php の beforeFilter 関数にあります。Auth オブジェクトの許可を設定する必要があります。

public function beforeFilter() {
    // put in the functions that point to the views you want to be able to see 
    // without logging in. This works for all controllers so be careful for naming
    // functions the same thing. (all index pages are viewable in this example)
    $this->Auth->allow('index', 'thePageIWantToSee', 'userAdd', 'landingPage');
}
于 2014-02-12T18:30:33.917 に答える