我正在开发cakephp的网站.我想使用用户名或emailid提供登录设施.
我在用.$ this-> Auth-> fields ['email'] ='username';
当登录失败并尝试再次重新登录时.但直到现在我还没有成功.
任何人都可以向我提出任何其他想法,或者我缺少什么.我也贬低了autorediret.
AuthComponent由于您可以在回调中进行设置beforeFilter,我认为您也应该能够在那里进行一些切换:
function beforeFilter() {
if (
isset($this->data['User']['login']) && // login form has been posted
Validation::email($this->data['User']['login']) // value looks like an email
) {
$this->Auth->fields = array('username' => 'email'); // change the db field
}
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可能需要尝试更早的过滤器,例如beforeRender,因为您需要在 之前触发代码AuthComponent::startup()。作为最后的手段,您可以扩展 AuthComponent:
App::import('Component', 'AuthComponent');
class AppAuthComponent extends AuthComponent {
function startup() {
# your code here
parent::startup();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |