2011-10-07 99 views
1

我想在登录用户之前在用户/登录操作中执行一些操作。禁用automagic CakePHP Auth登录()动作

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

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

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

回答

1

你可以写 - 像我一样(具有类似的验证码的东西) - 扩展了验证组件

然后覆盖login()方法,使自己的AuthExt组件(或命名为任何你喜欢),它适合您需要

+0

我认为这是最好的方法。谢谢! – kode

1

一个破解就是将Auth-> loginAction设置为一个不存在的操作(不存在以至于没有人可以访问它),所以Auth不会在login()中自动登录,你可以自己做那里的逻辑(密码散列仍然会自动应用)。

+0

我做的另一件事是注销用户,做你的东西,然后登录。 – kode

0

使用本:

function beforeFilter(){ 
} 

在这个函数u可以做任何事情之前,希望所有的事情发生在你的控制器。

+0

使用回调没有帮助我,但谢谢。 – kode