Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePHP更改默认登录设置_Php_Authentication_Cakephp_Login_Cakephp 1.2 - Fatal编程技术网

使用CakePHP更改默认登录设置

使用CakePHP更改默认登录设置,php,authentication,cakephp,login,cakephp-1.2,Php,Authentication,Cakephp,Login,Cakephp 1.2,我有一些我认为是一个比较常见的问题,但是在研究这个问题之后,它似乎不像我想象的那么容易 我有一个CakePHP应用程序(使用版本1.2.7),我正在尝试使用Auth组件更改标准登录过程。我想使用一个持久的登录屏幕(比如Jquery插件:),我的用户可以使用它登录 在Cake术语中,我希望能够从/pages/home屏幕登录到Auth组件,但Cakephp一直重定向到/users/login 在我的应用程序控制器中: function beforeFilter() { ... $thi

我有一些我认为是一个比较常见的问题,但是在研究这个问题之后,它似乎不像我想象的那么容易

我有一个CakePHP应用程序(使用版本1.2.7),我正在尝试使用Auth组件更改标准登录过程。我想使用一个持久的登录屏幕(比如Jquery插件:),我的用户可以使用它登录

在Cake术语中,我希望能够从/pages/home屏幕登录到Auth组件,但Cakephp一直重定向到/users/login

在我的应用程序控制器中:

 function beforeFilter()
 {
  ...
  $this->Auth->loginAction = array( 'controller' => 'users', 'action' => 'login' );
  $this->Auth->loginRedirect = array( 'controller' => 'pages', 'action' => 'home' );
  $this->Auth->logoutRedirect  = array( 'controller' => 'pages', 'action' => 'home' );
  $this->Auth->autoRedirect = false;
  ...
 }
如果我将登录更改为/pages/home。登录不起作用,事实上它甚至没有发布到/users/login方法。不太清楚发生了什么

我的问题是:

如何在www.EXAMPLE.com/上制作登录表单,成功登录和不成功登录时都会返回到同一位置?


我不希望它重定向到/users/login,也不希望它显示在URL中。

如果将$this->Auth->设置为false,则必须在login()方法中手动重定向。另请看一看。

要更改表单提交的位置,只需更改表单中的提交url即可

$form->create('User', array('url'=>array('controller'=>'users','action'=>'login')))

然后,您可以加载页面,并检查
操作
属性,您应该看到您的
/users/login
:)

以更改“Auth”设置的默认登录URL

lib/cake/Controller/component/AuthComponent.php中进行更改

   public $loginAction = array(
        'controller' => 'users', //Change here
        'action' => 'login',
        'plugin' => null
    );

谢谢你的回复。我曾经尝试过,并确认表单发布到了正确的控制器,但这是奇怪行为开始的地方。永远不会调用控制器中的实际方法。我通过注释掉方法中的所有代码并只添加一个日志调用来确认这一点。如果你使用的是Auth组件,你不需要在你的登录方法中使用任何代码。它可以是空的,试着清除所有的代码,并使用一个空函数来消除代码的问题。这不是形式问题,不是装载问题。这是一个问题的黑色魔术蛋糕是做的登录。我在下面的评论中提到了细节,但这些都是相关的想法。当我将表单发布到/users/login方法时,由于某种原因,从未对login函数进行实际调用。我只能假设它与Cake的Auth相关或受其保护,因为只要我将loginAction更改为/users/login,所有东西都会神奇地连接起来,并且运行时不会出现问题。那么,如果它运行时没有问题,会出现什么问题呢?如果您想登录用户,您必须在某处提交登录表单
$this->Auth->loginAction
是处理登录逻辑的方法。你可以随意命名,f.ex<代码>输入()
。您的表单必须提交到该操作-您在loginAction中指定的操作。在那里执行登录逻辑,并在成功和失败时重定向到主页。如果您将loginAction设置为一种方法,并将表单提交给另一种方法,则此选项无效。