Session配置

目录

基础介绍

网络是一个无状态的环境. 这意味着, 每次程序接收到的请求是与先前的请求无关的. 然而, 会话(sessions)可以让你在应用中储存每个访问者的任意数据. 这些会话数据存储在Web服务器上, 访问者计算机上存储的cookie中包含一个会话ID(session ID). 这个cookie帮助你的应用程序"记住"该用户的会话, 并可以让您的应用程序在后续的请求中检索会话数据.

提示: 使用会话(sessions)之前, 确保已在application/config/application.php文件中指定了应用程序键值(application key).

有六种Session驱动可用:

  • Cookie
  • 文件系统
  • 数据库
  • Memcached
  • Redis
  • 内存 (数组)

基于Cookie的Session

基于cookie的Session提供了一个轻量级和快速的存储会话信息的机制. 这种方法是很安全的. 每个cookie都使用使用强大的AES-256加密机制进行加密. 然而, cookies有4KB的存储限制, 如果你想在session中存储很多数据的话, 你可能希望使用另一种驱动.

要开始使用基于Cookie的Session, 只需修改application/config/session.php文件中的配置就好:

'driver' => 'cookie'

基于文件系统的Session

很有可能的, 你的应用程序使用基于文件系统的Session来工作. 但是, 如果你的应用程序接收请求很频繁或程序运行在服务器集群中, 请使用数据库或Memcached的Session机制.

要开始使用基于文件系统的Session, 只需修改application/config/session.php文件中的配置就好:

'driver' => 'file'

很好, 就这样做!

提示: 文件系统会被存储在storage/sessions目录, 所以确保它是可写的.

基于数据库的Session

开始使用基于数据库的Session前, 你需要 设置数据库连接.

接下来, 您将需要创建一个存储session的表. 下面是一些来帮助你完成创建的SQL语句. 然而, 你也可以使用Laravel的"Artisan"的命令行工具生成表!

Artisan

php artisan session:table

SQLite

CREATE TABLE "sessions" (
     "id" VARCHAR PRIMARY KEY NOT NULL UNIQUE,
     "last_activity" INTEGER NOT NULL,
     "data" TEXT NOT NULL
);

MySQL

CREATE TABLE `sessions` (
     `id` VARCHAR(40) NOT NULL,
     `last_activity` INT(10) NOT NULL,
     `data` TEXT NOT NULL,
     PRIMARY KEY (`id`)
);

如果你想使用一个不同的表名, 只需改变application/config/session.php文件中的table选项:

'table' => 'sessions'

你现在需要做的是设置在application/config/session.php文件中的驱动:

'driver' => 'database'

基于Memcached的Session

开始使用基于Memcached的Session前, 你需要配置Memcached服务器.

修改application/config/session.php文件中的配置就好:

'driver' => 'memcached'

基于Redis的Session

开始使用基于Redis的Session前, 你需要配置Redis服务器.

修改application/config/session.php文件中的配置就好:

'driver' => 'redis'

基于内存(In-Memory)的Session

基于内存(In-Memory)的Session驱动只使用一个简单的数组来存储当前请求的会话数据. 此驱动是用来做程序单元测试的, 因为数据没有被写入到磁盘. 它永远不应该被用来作为一个"(真正)Real"的Session驱动.