0

CakePHP Auth loginRedirect 错误/总是重定向到“用户/登录”,而我放置了不同的控制器。我的意思是,当我打开禁止页面时(不允许/需要登录)

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

它必须重定向到“玩家/索引”。我把登录重定向到“玩家”,

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

但它不起作用。它总是重定向到“用户/登录”而不是“玩家/索引”,而我写的是“'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());
}}

我的桌子名称:玩家

为什么结果总是重定向到“用户/登录”而不是“玩家/”或“玩家/索引”?请告诉我为什么会发生这种情况以及我该如何解决。谢谢!

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 回答
0

只需在用户/播放器控制器中使用 login() 函数。使用 if cause 您可以重定向到不同的页面。

public function login()
    {
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();
            if ($user) {
                $this->Auth->setUser($user);
                return $this->redirect('/account'); //$this->redirect($this->Auth->redirectUrl());
            }                
            return $this->redirect( ['controller' =>'pages', 'action' => 'login-fail']);
        }
    }

CakePHP 3.2 中使用的示例

于 2016-06-18T09:37:08.143 回答