【问题标题】:cakePHP 4 how to change session.cookie_lifetimecakePHP 4 如何更改 session.cookie_lifetime
【发布时间】:2022-01-30 23:50:22
【问题描述】:

我有时间结束会话。如果用户没有选中“remember_me”复选框 - 会话将持续 2 小时。当复选框被选中时 - 应该持续 - 48 小时。我有一个 loginСontroller,我在其中对登录结果做出反应,如果验证成功并且复选框 =“on”,您需要更改会话时间。我试图通过查看文档进行更改,并花了很多时间寻找解决方案。也许有人可以帮助我。非常感谢您[在此处输入图片描述]

这是我的文件 config/app.php

'Session' => [
    'defaults' => 'php',
     'ini' => [
         'session.cookie_lifetime' => 7200,
     ]
],

这是我的登录控制器

    `public function index()
    {
    $this->viewBuilder()->setLayout('main');
    $this->set("title", "");
    $this->set("description", "description");
    $this->request->allowMethod(['get', 'post']);

    $result = $this->Authentication->getResult();
    // regardless of POST or GET, redirect if user is logged in
    if ($result->isValid()) {
        if ($this->request->getData('remember') == 'on') {
            ///// the solution should be here
        }
        $redirect = [
            'controller' => 'Main',
            'action' => 'index',
        ];
        return $this->redirect($redirect);
    }
    // display error if user submitted and authentication failed
    if ($this->request->is('post') && !$result->isValid()) {
        $this->Flash->saved_error(__('Invalid email or password'));
    }
}`

【问题讨论】:

    标签: php authentication cookies cakephp cakephp-4.x


    【解决方案1】:

    您很可能不应该这样做,如果可以避免,您的控制器代码不应该知道这些细节。

    身份验证插件附带一个基于 cookie 的身份验证器,除了会话身份验证器之外,您还可以使用它,这样您就可以将身份验证扩展到默认会话生命周期之外,我建议您改为研究一下。

    $service->loadAuthenticator('Authentication.Cookie', [
        'fields' => $fields,
        'loginUrl' => $loginUrl,
        'cookie' => [
            // cookie expires in 2 days from now
            'expires' => \Cake\Chronos\Chronos::now()->addDays(2)
        ],
    ]);
    

    默认情况下,身份验证器会查找名为 remember_me 的字段,因此请在模板中重命名该字段,例如:

    echo $this->Form->control('remember_me', ['type' => 'checkbox']);
    

    或使用您在表单中使用的自定义字段名称配置身份验证器的 rememberMeField 选项。

    另见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-10
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多