0

我在使用 CakePHP Auth 登录时遇到了一些问题。出于某种原因,站点并没有转到我为其设置的路径,而是查看表单并直接进入登录功能。

解释一下,这是我的代码,

路由器文件:

Router::connect('/clientlogin', array('controller' => 'pages', 'action' => 'UsersLogin'));
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));

页面控制器 - 用户登录功能:

 public function UsersLogin() {
   $this->render('/Pages/LoginForm');
 } //End of UsersLogin function

用户控制器 - 登录功能:

   public function login() {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash('Invalid Username Or Password, Please Try Again', 'default', array(), 'bad');
            $this->redirect($this->Auth->redirect());
        }
   } //End of Login function

LoginForm.cpt 代码:

 echo $this->Session->flash('auth');
 echo $this->Form->create('User', array('url'=>'/login', 'id' => 'LoginForm')); 
 echo $this->Form->input('username');
 echo $this->Form->input('password');
 echo $this->Form->submit('Login', array('class' => 'Button'));
 echo $this->Form->end();

我站点中的主菜单有一个指向“/clientlogin”的“登录”按钮,它会加载表单供我的用户登录。但是,当会话信息过期时,需要登录才能访问它们的站点区域会促使我重新登录。

但是 CakePHP 不会去 /clientlogin 而是去 /login - 这不是表单而是登录控制器。此外,我将其更改为什么并不重要,但无论我指向哪里,我的表格就是蛋糕要去的地方。例如,我将表单更改为指向 /mylogintest 或 /loginuser,Cake 改为指向这些路径。

所以我的主要问题是,当 Cake 需要重新验证会话信息时,我如何确保它指向我的 clientform 路径而不是我的表单中布置的路径。

如果我不清楚,或者我没有发布需要的东西,那么请问我,我会尝试修复它。

非常感谢您提供的任何帮助

格伦。

4

1 回答 1

2

您可以通过将额外的密钥传递给组件来更改默认登录操作。请参阅下面的代码:

// Pass settings in $components array
public $components = array(
    'Auth' => array(
        'loginAction' => array(
            'controller' => 'pages',
            'action' => 'UsersLogin'
        )
     )
 );

我不确定为什么需要创建单独的操作来包含登录表单。通常我会在登录操作中包含表单并使用 $this->request->is('post') 检查请求。有关更多信息,请参阅食谱http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

于 2013-06-13T00:31:58.960 回答