2011-08-21 125 views
0

如何让用户在访问其帐户时必须重新输入密码?因此,例如:domain.com/account,然后他们看到一个简单的密码字段(即使他们登录),如果他们得到密码错误的,那么他们便会注销,与会话消息,说“出于安全考虑,您已被送往主页退出帐户“。CakePHP:请求用户在输入帐户时输入密码

任何人都可以帮忙吗?

该帐户是我的用户控制器中的编辑方法。

感谢

+0

你正在使用什么Cakephp版本? – Pehmolelu

+0

1.3.8。为什么这对此很重要?谢谢 – Cameron

+0

许多人已经转向2.0,所以只是想澄清它。你有没有尝试过任何东西?就像制作带有密码字段的帖子表格,然后使用hashpassword函数对其进行散列并与登录用户散列密码进行比较? – Pehmolelu

回答

0

我会做这样的事〜

// edit.ctp View 
echo $this->Form->input('password_check', array('type'=>'password')); 

// user.php Model 
function check_user_password($get_the_current_users_id) { 
    $salt = Configure::read('Security.salt'); 
    $this->User->id = $get_the_current_users_id; 
    $hashed_password = $this->User->field('password'); 
    // check password 
    if($hashed_password == md5($data['User']['password_check'].$salt)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

你需要调整密码哈希位;如果你不使用盐等

但这个想法是比较数据库中的用户散列密码,他们提交的密码。如果它匹配;那么你可以继续。否则,您可以注销/返回错误。 (为了可用性,我会而不是注销用户,因为这只会令人讨厌。)

+0

我在控制器中显示密码字段或编辑配置文件视图的内容? – Cameron

+0

基本if/else语句;也许使用'$ this-> render'来避免改变动作。如果他们通过身份验证,则设置会话为什么要去解决所有这些问题?它打破惯例有一个用户重新输入密码,只需在登录后访问他的帐户,我能理解,要求密码确认后作出敏感的变化。但你只是为你的用户做额外的工作。 – Ross

+0

这是一个客户端请求。他们在MobileMe网站上看到了类似的内容,并希望在我为他们开发的应用中实现它。我仍然不完全理解如何使用您发布的代码。您是否能够显示控制器代码以及如何使用发布的功能?非常感激。谢谢 – Cameron

相关问题