|
| 1 | +<?php |
| 2 | +declare(strict_types=1); |
| 3 | + |
| 4 | +return [ |
| 5 | + 'login_type' => env('JWT_LOGIN_TYPE', 'mpop'), // 登录方式,sso为单点登录,mpop为多点登录 |
| 6 | + |
| 7 | + /** |
| 8 | + * 单点登录自定义数据中必须存在uid的键值,这个key你可以自行定义,只要自定义数据中存在该键即可 |
| 9 | + */ |
| 10 | + 'sso_key' => 'uid', |
| 11 | + |
| 12 | + 'secret' => env('JWT_SECRET', 'phper666'), // 非对称加密使用字符串,请使用自己加密的字符串 |
| 13 | + |
| 14 | + /** |
| 15 | + * JWT 权限keys |
| 16 | + * 对称算法: HS256, HS384 & HS512 使用 `JWT_SECRET`. |
| 17 | + * 非对称算法: RS256, RS384 & RS512 / ES256, ES384 & ES512 使用下面的公钥私钥. |
| 18 | + */ |
| 19 | + 'keys' => [ |
| 20 | + 'public' => env('JWT_PUBLIC_KEY'), // 公钥,例如:'file:///path/to/public/key' |
| 21 | + 'private' => env('JWT_PRIVATE_KEY'), // 私钥,例如:'file:///path/to/private/key' |
| 22 | + ], |
| 23 | + |
| 24 | + 'ttl' => env('JWT_TTL', 7200), // token过期时间,单位为秒 |
| 25 | + |
| 26 | + 'alg' => env('JWT_ALG', 'HS256'), // jwt的hearder加密算法 |
| 27 | + |
| 28 | + /** |
| 29 | + * 支持的算法 |
| 30 | + */ |
| 31 | + 'supported_algs' => [ |
| 32 | + 'HS256' => 'Lcobucci\JWT\Signer\Hmac\Sha256', |
| 33 | + 'HS384' => 'Lcobucci\JWT\Signer\Hmac\Sha384', |
| 34 | + 'HS512' => 'Lcobucci\JWT\Signer\Hmac\Sha512', |
| 35 | + 'ES256' => 'Lcobucci\JWT\Signer\Ecdsa\Sha256', |
| 36 | + 'ES384' => 'Lcobucci\JWT\Signer\Ecdsa\Sha384', |
| 37 | + 'ES512' => 'Lcobucci\JWT\Signer\Ecdsa\Sha512', |
| 38 | + 'RS256' => 'Lcobucci\JWT\Signer\Rsa\Sha256', |
| 39 | + 'RS384' => 'Lcobucci\JWT\Signer\Rsa\Sha384', |
| 40 | + 'RS512' => 'Lcobucci\JWT\Signer\Rsa\Sha512', |
| 41 | + ], |
| 42 | + |
| 43 | + /** |
| 44 | + * 对称算法名称 |
| 45 | + */ |
| 46 | + 'symmetry_algs' => [ |
| 47 | + 'HS256', |
| 48 | + 'HS384', |
| 49 | + 'HS512' |
| 50 | + ], |
| 51 | + |
| 52 | + /** |
| 53 | + * 非对称算法名称 |
| 54 | + */ |
| 55 | + 'asymmetric_algs' => [ |
| 56 | + 'RS256', |
| 57 | + 'RS384', |
| 58 | + 'RS512', |
| 59 | + 'ES256', |
| 60 | + 'ES384', |
| 61 | + 'ES512', |
| 62 | + ], |
| 63 | + |
| 64 | + /** |
| 65 | + * 是否开启黑名单,单点登录和多点登录的注销、刷新使原token失效,必须要开启黑名单,目前黑名单缓存只支持hyperf缓存驱动 |
| 66 | + */ |
| 67 | + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), |
| 68 | + |
| 69 | + /** |
| 70 | + * 黑名单的宽限时间 单位为:秒,注意:如果使用单点登录,该宽限时间无效 |
| 71 | + */ |
| 72 | + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), |
| 73 | + |
| 74 | + /** |
| 75 | + * 黑名单缓存token时间,注意:该时间一定要设置比token过期时间要大一点,默认为1天,最好设置跟过期时间一样 |
| 76 | + */ |
| 77 | + 'blacklist_cache_ttl' => env('JWT_TTL', 86400), |
| 78 | + |
| 79 | + 'blacklist_prefix' => 'hyperf-api', // 黑名单缓存的前缀 |
| 80 | + |
| 81 | + /** |
| 82 | + * 区分不同场景的token,比如你一个项目可能会有多种类型的应用接口鉴权,下面自行定义,我只是举例子 |
| 83 | + * 下面的配置会自动覆盖根配置,比如application1会里面的数据会覆盖掉根数据 |
| 84 | + * 下面的scene会和根数据合并 |
| 85 | + * scene必须存在一个default |
| 86 | + * 什么叫根数据,这个配置的一维数组,除了scene都叫根配置 |
| 87 | + */ |
| 88 | + 'scene' => [ |
| 89 | + 'default' => [], |
| 90 | + 'application1' => [ |
| 91 | + 'secret' => 'application1', // 非对称加密使用字符串,请使用自己加密的字符串 |
| 92 | + 'login_type' => 'sso', // 登录方式,sso为单点登录,mpop为多点登录 |
| 93 | + 'sso_key' => 'uid', |
| 94 | + 'ttl' => 7200, // token过期时间,单位为秒 |
| 95 | + 'blacklist_cache_ttl' => env('JWT_TTL', 7200), // 黑名单缓存token时间,注意:该时间一定要设置比token过期时间要大一点,默认为100秒,最好设置跟过期时间一样 |
| 96 | + ], |
| 97 | + 'application2' => [ |
| 98 | + 'secret' => 'application2', // 非对称加密使用字符串,请使用自己加密的字符串 |
| 99 | + 'login_type' => 'sso', // 登录方式,sso为单点登录,mpop为多点登录 |
| 100 | + 'sso_key' => 'uid', |
| 101 | + 'ttl' => 7200, // token过期时间,单位为秒 |
| 102 | + 'blacklist_cache_ttl' => env('JWT_TTL', 7200), // 黑名单缓存token时间,注意:该时间一定要设置比token过期时间要大一点,默认为100秒,最好设置跟过期时间一样 |
| 103 | + ], |
| 104 | + 'application3' => [ |
| 105 | + 'secret' => 'application3', // 非对称加密使用字符串,请使用自己加密的字符串 |
| 106 | + 'login_type' => 'mppo', // 登录方式,sso为单点登录,mpop为多点登录 |
| 107 | + 'ttl' => 7200, // token过期时间,单位为秒 |
| 108 | + 'blacklist_cache_ttl' => env('JWT_TTL', 7200), // 黑名单缓存token时间,注意:该时间一定要设置比token过期时间要大一点,默认为100秒,最好设置跟过期时间一样 |
| 109 | + ] |
| 110 | + ], |
| 111 | + 'model' => [ // TODO 支持直接获取某模型的数据 |
| 112 | + 'class' => '', |
| 113 | + 'pk' => 'uid' |
| 114 | + ] |
| 115 | +]; |
0 commit comments