【问题标题】:Token Miss Match When Session driver is Database Laravel会话驱动程序为数据库 Laravel 时的令牌未匹配
【发布时间】:2018-02-08 20:46:26
【问题描述】:

当我将驱动程序会话更改为数据库时遇到问题,当我尝试登录时总是令牌未匹配。 我做了一些动作,比如

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,
];

我有这个错误

【问题讨论】:

标签: php database laravel session


【解决方案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- 更新 config/session.php 文件连接参数应该在哪里保存您在 .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 列作为 bigint 手动创建表,会话表是不同的。 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)
)

请检查我认为这些信息对你有帮助!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2019-02-27
    • 2015-03-25
    • 2013-06-08
    • 2016-12-25
    • 2016-09-29
    • 2015-09-21
    相关资源
    最近更新 更多