0

我正在尝试为 CakePHP 服务创建合适的身份验证检查。目前看来,用户会话最初是在登录期间创建的,但在单个会话期间从未检查过。

例如。重命名用户名,更改用户数据库条目中的密码或 ID 对会话没有影响。

对于这种不断检查的身份验证,是否有首选方法?本质上,用户应在每次请求时确认访问。

我当前的解决方案将涉及扩展AuthComponent和存储用户数据的哈希(包括加密密码)并在每次请求时检查它。我还考虑将会话 ID 存储在同一个令牌中,但注意到 CakePHP 甚至不使用该session_start()函数。

这个功能对我来说似乎是必要的,我原以为其他人也需要这样的解决方案。我还没有找到类似于我需要的 Cake 文档或社区解决方案。

4

2 回答 2

2

好吧,您可以使用AuthComponentisAuthorized()中的函数。每个请求都会调用它。

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 的视频这很棒。

如果您需要更多信息或帮助,请随时提出。

顺便提一句。如果您希望每次请求都调用函数,则必须在控制器中配置AuthComponent 。isAuthorized()

于 2012-10-12T07:57:29.347 回答
0

如果Session.timeout在零分钟设置下可以正常工作,那么您就设置好了。http://book.cakephp.org/2.0/en/development/sessions.html

于 2012-10-12T05:16:19.397 回答