禁用automagic CakePHP身份验证登录()操作

禁用automagic CakePHP身份验证登录()操作,cakephp,login,authentication,Cakephp,Login,Authentication,在登录用户之前,我想在用户/登录操作中做一些事情 例如,我在每第三次提交的登录表单上都有验证码,我想检查验证码是否有效。如果它是无效的,我希望用户先正确填写,然后才能提交。如果验证码没问题,我想使用Auth->login() 不幸的是,当提交表单Auth->data['User']['username']和Auth->data['User']['password']时,已被填写,并且登录已完成(自动) 如何禁用Auth组件的自动用户登录,并仅从Auth->login($data)执行此操作?根据

在登录用户之前,我想在用户/登录操作中做一些事情

例如,我在每第三次提交的登录表单上都有验证码,我想检查验证码是否有效。如果它是无效的,我希望用户先正确填写,然后才能提交。如果验证码没问题,我想使用Auth->login()

不幸的是,当提交表单Auth->data['User']['username']和Auth->data['User']['password']时,已被填写,并且登录已完成(自动)


如何禁用Auth组件的自动用户登录,并仅从Auth->login($data)执行此操作?

根据您的项目,一个选项是升级到CakePHP 2.0,因为自动魔法行为已被删除,请参阅。

一个技巧是将Auth->loginAction设置为不存在的操作(不存在,因此没有人可以访问它),因此Auth不会在login()中自动登录,您可以在其中执行自己的逻辑(密码哈希仍然自动应用)。

您可以编写自己的AuthText组件(或随意命名),扩展Auth组件,就像我编写的一样(使用类似的验证码)

然后重写login()方法,使其适合您的需要

使用以下方法:

function beforeFilter(){
}

在这个功能中,你可以在控制器发生任何事情之前完成所有想要做的事情。

我做的另一个黑客是注销用户,完成你的工作,然后登录。我认为这是最好的方法。谢谢!