Token Miss Match当会话驱动程序是数据库Laravel时

时间:2017-08-31 02:15:36

标签: php database laravel session

当我将驱动程序会话更改为数据库时,我遇到问题,当我尝试登录时始终是令牌未命中匹配。 我做过一些像

这样的动作
php artisan config:clear
php artisan config:cache 
php artisankey:generate

并在config / session.php中更改

return [
    'driver' => env('SESSION_DRIVER', 'file'),'lifetime' => 120,
    'expire_on_close' => false,
    'encrypt' => false,'files' => 
    'storage_path('framework/sessions'),'connection' => 'mysql',
    'table' => 'sessions',
    'store' => null,
    'lottery' => [2, 100],
    'cookie' => 'laravel_session',
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false);
    'http_only' => true,
];

这个错误我有

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您应该按照以下步骤将SESSION_DRIVER设置为数据库

1-你的.env文件

项目根目录中的

#file = .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=db_user
DB_PASSWORD=secret_pass

SESSION_DRIVER=database

注意此处的DB_CONNECTION设置,您将在下一步中使用。

2- update config / session.php文件其中connection param应该包含你在.env文件中用于DB_CONNECTION的字符串

#file = config / session.php

'driver' => env('SESSION_DRIVER', 'database'),
'connection' => 'mysql', // this is from DB_CONNECTION in .env file 

3-生成会话表

php artisan session:table

//运行迁移!非常非常重要

php artisan migrate

4-如果由于某种原因您决定在不使用迁移的情况下手动创建表,请使用此SQL。这是非常重要的一步,错误的表会导致各种问题。主要是不要像往常一样使用id列手动创建表的错误,会话表是不同的。 如果您想手动创建

,那么您应该运行的会话表SQL
DROP TABLE IF EXISTS `sessions`;
create table sessions
(
  id varchar(255) not null,
  user_id int(10) unsigned null,
  ip_address varchar(45) null,
  user_agent text null,
  payload text not null,
  last_activity int not null,
  constraint sessions_id_unique
  unique (id)
)

请检查我认为此信息对您有帮助!!!