在CodeIgniter 4中重定向后,会话丢失

时间:2020-10-15 05:37:55

标签: php session codeigniter-4

去年8月,在Code Igniter 4中启用了会话功能,并且可以正常工作。昨天,我尝试再次运行该代码,但登录页面中的会话无法调用到另一个页面。 这是我的代码:

控制器:

function datauser(){
        $datauser = [
        'username'  => 'user',
        'level'     => 'user',
        'logged_in' => TRUE
    ];

    $this->session->set($datauser);
    return redirect()->to(base_url('/test/show_session'));

 }

控制器测试:

public function show_session()
{
    echo $this->session->username;
}

我将会话放在BaseController中,就像这样:

public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
    parent::initController($request, $response, $logger);
    helper(['url','form']);
    $this->session = \Config\Services::session();
    session();
}

文件.env:

CI_ENVIRONMENT = production
# app.baseURL = ''
# app.forceGlobalSecureRequests = false

# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
# app.sessionCookieName = 'ci_session'
# app.sessionSavePath = NULL
# app.sessionMatchIP = false
 app.sessionTimeToUpdate = 300
# app.sessionRegenerateDestroy = false

# app.cookiePrefix = ''
# app.cookieDomain = ''
# app.cookiePath = '/'
  app.sessionExpiration =0;
  app.cookieSecure = true
  app.cookieHTTPOnly = true

# app.CSRFProtection  = false
# app.CSRFTokenName   = 'csrf_test_name'
# app.CSRFCookieName  = 'csrf_cookie_name'
# app.CSRFExpire      = 7200
# app.CSRFRegenerate  = true
# app.CSRFExcludeURIs = []

# app.CSPEnabled = false

#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------
# database.tests.hostname = localhost
# database.tests.database = ci4
# database.tests.username = root
# database.tests.password = root
# database.tests.DBDriver = MySQLi

#--------------------------------------------------------------------
# CONTENT SECURITY POLICY
#--------------------------------------------------------------------

# contentsecuritypolicy.reportOnly = false
# contentsecuritypolicy.defaultSrc = 'none'
# contentsecuritypolicy.scriptSrc = 'self'
# contentsecuritypolicy.styleSrc = 'self'
# contentsecuritypolicy.imageSrc = 'self'
# contentsecuritypolicy.base_uri = null
# contentsecuritypolicy.childSrc = null
# contentsecuritypolicy.connectSrc = 'self'
# contentsecuritypolicy.fontSrc = null
# contentsecuritypolicy.formAction = null
# contentsecuritypolicy.frameAncestors = null
# contentsecuritypolicy.mediaSrc = null
# contentsecuritypolicy.objectSrc = null
# contentsecuritypolicy.pluginTypes = null
# contentsecuritypolicy.reportURI = null
# contentsecuritypolicy.sandbox = false
# contentsecuritypolicy.upgradeInsecureRequests = false

#--------------------------------------------------------------------
# ENCRYPTION
#--------------------------------------------------------------------

# encryption.key = 
# encryption.driver = OpenSSL

#--------------------------------------------------------------------
# HONEYPOT
#--------------------------------------------------------------------

# honeypot.hidden = 'true'
# honeypot.label = 'Fill This Field'
# honeypot.name = 'honeypot'
# honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
# honeypot.container = '<div style="display:none">{template}</div>'

我很困惑,结果显示为空白视图。怎么了?

1 个答案:

答案 0 :(得分:0)

对于设置会话

 $datauser = [
    'username'  => 'user',
    'level'     => 'user',
    'logged_in' => TRUE
];
   session()->set($datauser);

获取会话

   if( session()->has('userdata')){

      $userdata = session()->get('userdata');
   
   }

.env

    # app.sessionDriver ='CodeIgniter\Session\Handlers\FileHandler'
    # app.sessionCookieName = 'ci_session'
    # app.sessionSavePath = NULL
    # app.sessionMatchIP = false
    # app.sessionTimeToUpdate = 300
    # app.sessionRegenerateDestroy = false