我正在尝试为CakePHP服务创建合适的身份验证检查。目前看来,用户会话最初是在登录期间创建的,但在单个会话期间从未检查过。
例如。重命名用户名,更改用户数据库条目中的密码或ID对会话没有影响。
对于这种经常检查的身份验证,是否有首选方法?基本上,用户应该在每次请求时都被确认访问。
我当前的解决方案将涉及扩展AuthComponent
并存储用户数据的散列(包括加密密码),并在每次请求时进行检查。我还考虑将会话ID存储在同一个令牌中,但注意到CakePHP甚至没有使用session_start()
函数。
此功能对我来说似乎是必要的,我认为其他人也需要这样的解决方案。我还没有找到类似于我需要的Cake文档或社区解决方案。
答案 0 :(得分:2)
好吧,您可以使用 AuthComponent 中的isAuthorized()
功能。每次请求都会调用它。
public function isAuthorized($user){
return true; //allow the user to see the page
}
您可以debug($user)
查看实际数据,如果您想从数据库中获取“新”信息,您可以随时获取这些信息:
public function isAuthorized($user){
$current_user_from_database = $this->User->findById($user['id']);
if($current_user_from_database['User']['username'] != $user['username']){
$this->Session->setFlash('You\'ve changed the username. Please, login again.');
$this->redirect($this->Auth->logout);
return false;
}
return true;
}
查看API以获取更多信息以及PDF书籍。您也可以查看有关AuthComponent的this视频。太棒了。
如果您需要更多信息或帮助,请随时提出。
顺便说一下。如果希望每次请求都调用isAuthorized()
函数,则必须在Controller中配置 AuthComponent 。
答案 1 :(得分:0)
如果Session.timeout
在零分钟设置下正常工作,则您已设置。 http://book.cakephp.org/2.0/en/development/sessions.html