85 lines
2.8 KiB
PHP
85 lines
2.8 KiB
PHP
<?php
|
||||
|
|
|
|||
|
|
/**
|
|||
|
|
* JWT 配置文件
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
return [
|
|||
|
|
'enable' => true,
|
|||
|
|
'token_name' => 'Authorization',
|
|||
|
|
// ========== 密钥配置 ==========
|
|||
|
|
// 必须修改为您的实际密钥,建议使用 openssl_random_pseudo_bytes(32) 生成
|
|||
|
|
'secret' => env('JWT_SECRET', 'your-secret-key-change-in-production'),
|
|||
|
|
|
|||
|
|
// 加密算法
|
|||
|
|
'algo' => env('JWT_ALGO', 'HS256'),
|
|||
|
|
|
|||
|
|
// ========== Token 有效期配置 (秒) ==========
|
|||
|
|
'ttl' => [
|
|||
|
|
// 访问令牌有效期
|
|||
|
|
'access' => env('JWT_ACCESS_TTL', 3600),
|
|||
|
|
|
|||
|
|
// 刷新令牌有效期,默认 7 天
|
|||
|
|
'refresh' => env('JWT_REFRESH_TTL', 604800),
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
// ========== 登录模式 ==========
|
|||
|
|
// single: 单端登录(同一用户只能在一个设备登录)
|
|||
|
|
// client: 客户端模式(同一客户端只能在一个设备,不同客户端可同时)
|
|||
|
|
// multi: 多端登录(同一用户可在多个设备同时登录)
|
|||
|
|
'login_mode' => env('JWT_LOGIN_MODE', 'multi'),
|
|||
|
|
|
|||
|
|
// ========== 客户端类型配置 ==========
|
|||
|
|
// 预定义类型: admin, api, web, mobile, mini
|
|||
|
|
// 可在此处添加自定义类型
|
|||
|
|
'client_types' => [
|
|||
|
|
// 示例:添加自定义客户端类型
|
|||
|
|
// 'pc' => 'pc',
|
|||
|
|
// 'ipad' => 'ipad',
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
// ========== 存储配置 ==========
|
|||
|
|
'storage' => [
|
|||
|
|
// Token 存储驱动
|
|||
|
|
'token' => env('JWT_STORAGE_TOKEN', 'redis'),
|
|||
|
|
// 黑名单存储驱动
|
|||
|
|
'blacklist' => env('JWT_STORAGE_BLACKLIST', 'redis'),
|
|||
|
|
// Redis 前缀
|
|||
|
|
'redis_prefix' => env('JWT_REDIS_PREFIX', 'jwt:'),
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
// ========== 安全配置 ==========
|
|||
|
|
'security' => [
|
|||
|
|
// 是否启用刷新令牌
|
|||
|
|
'refresh_enabled' => true,
|
|||
|
|
|
|||
|
|
// 刷新令牌宽限期(秒),允许在令牌即将过期时提前刷新
|
|||
|
|
'refresh_grace_period' => env('JWT_REFRESH_GRACE_PERIOD', 3600),
|
|||
|
|
|
|||
|
|
// 最大同时登录设备数(0 表示不限制)
|
|||
|
|
'max_devices' => env('JWT_MAX_DEVICES', 0),
|
|||
|
|
|
|||
|
|
// 是否强制刷新(每次请求都返回新的 access_token)
|
|||
|
|
'force_refresh' => false,
|
|||
|
|
|
|||
|
|
// 滑动过期:每次使用自动延长 access_token 有效期
|
|||
|
|
'sliding_expiry' => false,
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
// ========== Redis 连接配置 ==========
|
|||
|
|
'redis' => [
|
|||
|
|
'host' => env('REDIS_HOST', '127.0.0.1'),
|
|||
|
|
'port' => env('REDIS_PORT', 6379),
|
|||
|
|
'password' => env('REDIS_PASSWORD'),
|
|||
|
|
'database' => env('REDIS_DATABASE', 0),
|
|||
|
|
'timeout' => env('REDIS_TIMEOUT', 0),
|
|||
|
|
],
|
|||
|
|
|
|||
|
|
// ========== 预留字段 ==========
|
|||
|
|
// 可在生成 Token 时传入自定义数据
|
|||
|
|
'reserved_claims' => [
|
|||
|
|
// 'iss', // 签发者
|
|||
|
|
// 'aud', // 受众
|
|||
|
|
],
|
|||
|
|
];
|