2012-05-01 22 views
1

我想建立一个像RSA/Page Token这样的安全措施,其中令牌是登录中的3表单参数。 (用户名,密码,令牌)是否可以在CakePHP身份验证组件中构建额外的条件?

我不清楚用户控制器的“登录”操作的作用是什么。这是Auth组件的一个“AfterFilter”?

这个逻辑会起作用吗?

// controllers/users_controller.php 
login() 
{ 
    if(isbadtoken($this->data['User']['Token'])) 
     $this-redirect('http://dev.null'); 
} 

此逻辑是否应用于应用程序控制器,如Cookie登录和社交网络登录?

回答

1

在蛋糕2.0+,你需要手动调用身份验证登录方法,所以这样的事情应该工作:

function login() 
{ 
    if (isbadtoken($this->request->data['User']['Token'])) 
    { 
     return; 
    } 

    // login user etc.. 
    if ($this->Auth->login()) 
    { /* ... */ } 
} 

在以前版本的蛋糕,身份验证登录信息已代码之前调用,所以像这将是必要的:

function login() 
{ 
    if (isbadtoken($this->request->data['User']['Token'])) 
    { 
     // since auth doesn't know about about token, 
     // log out the user in case auth login was successfull 
     $this->Auth->logout(); 
     return; 
    } 

    if (!$this->Auth->user()) 
    { 
     /* user is not logged in */ 
     return; 
    } 

    /* user is logged in */ 
} 

一个更好的解决方案可能会作出权威性组件知道令牌并以某种方式将其包含在登录过程,但如果太复杂的话,像上述应给你没有麻烦。

+0

我最终通过一个TokenController来保护登录表单的UserController login()动作,该TokenController要求一个用户的电子邮件地址,并通过包含该标记的链接向该地址发送和发送电子邮件。令牌控制器检查电子邮件/用户的合法性。令牌非常短暂。 –

+0

@MarcCondon:这听起来像是一个很好的注册解决方案,但是你真的想为每个_login_做这个吗? –

相关问题