Kohana 3.2 身份验证 ORM:我似乎无法使用"remember me"选项集保持登录状态



我在身份验证/ORM和auto_login方面遇到了问题。我将生存期设置为两周,但无论浏览器是否关闭,大约一个小时后我都会注销。事实上,它是基于时间的,因为会话确实会停留,即使在浏览器关闭后也是如此。

我已经设置了这样的东西(任何帮助将不胜感激!!):

引导程序.php

Cookie::$salt = 'some random string here';

配置/身份验证.php

<?php defined('SYSPATH') or die('No direct access allowed.');
return array(
'driver'       => 'ORM',
'hash_method'  => 'sha256',
'hash_key'     => '<another random string>',
'lifetime'     => 1209600, // TWO WEEKS, NO?
'session_type' => Session::$default,
'session_key'  => 'auth_user',
// Username/password combinations for the Auth File driver
'users' => array(
),
);

类/控制器/身份验证.php

public function action_login() { // Check to make sure the user isn't already logged in... if (Auth::instance()->logged_in() || Auth::instance()->auto_login()) {
$this->request->redirect($this->request->referrer()); }
$referrer = base64_encode($this->request->referrer());
$post = $this->request->post();
if (!empty($post))
{
    $remember = isset($post['remember']); // <-- This value has been verified
    Auth::instance()->login(Arr::get($post, 'email'), Arr::get($post, 'password'), $remember);
    if (Auth::instance()->logged_in())
    {
        $this->request->redirect(base64_decode(Arr::get($post, 'referrer')));
    }
    else
    {
        $this->view->set('error', true);
    }
    if (isset($post['referrer']))
    {
        $referrer = Arr::get($post, 'referrer');
    }
}
$this->view = Template::factory('auth/login');
$this->view->set('referrer', $referrer);
} 

类/控制器/网站.php

class Controller_Website extends Controller { 
    public function before()
    {
        $parent_before = parent::before();
        if (Auth::instance()->logged_in() || Auth::instance()->auto_login()) //<-- isn't this where the magic is supposed to be happening?!?!
        {
            $this->user = Auth::instance()->get_user();
        }
        elseif ($this->require_auth && !in_array($this->request->action(), $this->auth_allow_actions))
        {
            $this->request->redirect('/auth/login');
        }
        return $parent_before;
    }
}

尝试像这样设置$remember:

$remember = array_key_exists('remember', $this->request->post()) ? (bool) $this->request->post('remember') : FALSE;

最新更新