1

我正在尝试在 CakePHP 中使用 AuthComponent 的默认行为,但是当我尝试在操作中使用该方法时,我得到了一个奇怪$this->Auth->redirect()的行为login

我想将登录的用户重定向到view他之前被重定向的位置,例如CakePHP 登录重定向到请求的 URL文章。我也读过CakePHP 1.3 身份验证,但不明白我错在哪里。

这是我的代码:

应用控制器

public $components = array(
    'Session',
    'Auth' => array(
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
        'authError' => 'Error message',
        'authorize' => array(
            'Controller',
            'Actions' => array(
                'actionPath' => 'controllers'
            )
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

用户控制器

public function login () {
    if ($this->request->is ('post')){
        if ($this->Auth->login()) {
            $auth_user = $this->Auth->user();
            $this->User->id = $auth_user['id'];
            $this->User->saveField('last_login', date('Y-m-d H:i:s'));

            $this->Session->write('flash_element','done');
            $this->Session->setFlash('Welcome back <b>'.$auth_user['username'].'</b>!');

            $this->redirect ($this->Auth->redirect());
        } else {
            $this->set('flash_element','warning');
            $this->Session->setFlash('Wrong login');
        }
    }
}

此设置将我重定向到如果http://site.com/users/img/favicon.png
我得到完全字符串。debug$this->Auth->redirect()/users/img/favicon.png

我试图在default.ctp布局文件中注释一行,在它之后everything works perfect,为什么?

<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title><?php echo $title_for_layout; ?></title>

        <meta name="HandheldFriendly" content="True">
        <meta name="MobileOptimized" content="320">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
        <!--[if lt IE 9]>
            <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <?php
        echo $this->Html->css('style.css');
        //echo $this->Html->meta('icon','img/favicon.png');
        ...

我不明白为什么这条线会破坏我的AuthComponent,是网站图标代码错误吗?

应用程序的其余部分与所有模型、视图和控制器完美配合。

4

2 回答 2

1

尝试从用户控制器中移除脚手架并烘焙它。

于 2012-10-27T00:02:36.513 回答
0

尝试将“loginRedirect”键放入 AuthComponent 设置中:

public $components = array(
    'Session',
    'Auth' => array(
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
        'loginRedirect' => array('controller' => 'users', 'action => 'view'),
        'authError' => 'Error message',
        'authorize' => array(
            'Controller',
            'Actions' => array(
                'actionPath' => 'controllers'
            )
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

$this->Auth->login()应该自动神奇地重定向你。

于 2012-09-26T08:37:40.163 回答