設定
goJwt.Config 上的所有開關 — Redis、PEM 金鑰、Option 預設、Cookie 屬性與 CheckAuth。
Config 結構
| 欄位 | 型別 | 必要 | 說明 |
|---|---|---|---|
Redis |
Redis |
是 | Redis 連線設定 |
File |
*File |
否 | PEM 金鑰檔案路徑 |
Option |
*Option |
否 | Token 參數調整 |
Cookie |
*Cookie |
否 | Cookie 屬性設定 |
CheckAuth |
func(Auth) (bool, error) |
否 | 自訂使用者驗證回呼 |
Redis 設定
| 欄位 | 型別 | 必要 | 說明 |
|---|---|---|---|
Host |
string |
是 | Redis 主機位址 |
Port |
int |
是 | Redis 連接埠 |
Password |
string |
否 | Redis 密碼 |
DB |
int |
是 | Redis 資料庫編號 |
Option 預設值
欄位為零值或空字串時,由 validOptionData 套用:
| 欄位 | 預設 | 說明 |
|---|---|---|
AccessTokenExpires |
15m |
Access Token 有效期限 |
RefreshIdExpires |
7d |
Refresh ID 有效期限 |
AccessTokenCookieKey |
access_token |
Access Token Cookie 鍵名 |
RefreshIdCookieKey |
refresh_id |
Refresh ID Cookie 鍵名 |
MaxVersion |
5 |
重建 Refresh ID 前的刷新次數 |
RefreshTTL |
0.5 |
觸發 Refresh ID 重建的 TTL 比例門檻 |
PrivateKey |
空 | 內嵌私鑰 PEM 文字 |
PublicKey |
空 | 內嵌公鑰 PEM 文字 |
Cookie 設定
| 欄位 | 型別 | 預設 | 說明 |
|---|---|---|---|
Domain |
*string |
無 | Cookie 網域 |
Path |
*string |
/ |
Cookie 路徑 |
SameSite |
*http.SameSite |
Lax |
SameSite 屬性 |
Secure |
*bool |
false |
僅 HTTPS |
HttpOnly |
*bool |
true |
HttpOnly 旗標 |
PEM 金鑰
支援三種設定方式,優先順序如下:
File.PrivateKeyPath/File.PublicKeyPath— 指定檔案路徑Option.PrivateKey/Option.PublicKey— 直接提供 PEM 文字- 自動偵測
./keys/private-key.pem與./keys/public-key.pem;若不存在則產生新的 ECDSA P-256 金鑰對
CheckAuth
刷新期間可選呼叫的回呼。回傳 false(或 error)可在使用者不存在或不應繼續登入時強制登出。
CheckAuth: func(auth goJwt.Auth) (bool, error) {
return userExists(auth.ID)
},
完整範例
secure := true
jwtAuth, err := goJwt.New(goJwt.Config{
Redis: goJwt.Redis{
Host: "localhost",
Port: 6379,
Password: "secret",
DB: 1,
},
Option: &goJwt.Option{
AccessTokenExpires: 10 * time.Minute,
RefreshIdExpires: 14 * 24 * time.Hour,
MaxVersion: 3,
RefreshTTL: 0.4,
},
Cookie: &goJwt.Cookie{
Secure: &secure,
},
CheckAuth: func(auth goJwt.Auth) (bool, error) {
return auth.ID != "", nil
},
})