Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 40 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,8 @@ Easily add login, token refresh, and authorization to your Gin applications.
- [Redis Store Configuration](#redis-store-configuration)
- [Redis Features](#redis-features)
- [Redis Usage Methods](#redis-usage-methods)
- [Method 1: Enable Redis with Default Configuration](#method-1-enable-redis-with-default-configuration)
- [Method 2: Enable Redis with Custom Address](#method-2-enable-redis-with-custom-address)
- [Method 3: Enable Redis with Full Options](#method-3-enable-redis-with-full-options)
- [Method 4: Enable Redis with Custom Configuration](#method-4-enable-redis-with-custom-configuration)
- [Method 5: Configure Client-side Cache](#method-5-configure-client-side-cache)
- [Method 6: Method Chaining](#method-6-method-chaining)
- [Using Functional Options Pattern (Recommended)](#using-functional-options-pattern-recommended)
- [Available Options](#available-options)
- [Configuration Options](#configuration-options)
- [RedisConfig](#redisconfig)
- [Fallback Behavior](#fallback-behavior)
Expand Down Expand Up @@ -381,65 +377,51 @@ This library supports Redis as a backend for refresh token storage, with built-i

### Redis Usage Methods

#### Method 1: Enable Redis with Default Configuration
#### Using Functional Options Pattern (Recommended)

The Redis configuration now uses a functional options pattern for cleaner and more flexible configuration:

```go
// Method 1: Enable Redis with default configuration
middleware := &jwt.GinJWTMiddleware{
// ... other configuration
}

// Enable Redis with default settings (localhost:6379)
middleware.EnableRedisStore()
```

#### Method 2: Enable Redis with Custom Address

```go
// Enable Redis with custom address
middleware.EnableRedisStoreWithAddr("redis.example.com:6379")
```

#### Method 3: Enable Redis with Full Options

```go
// Enable Redis with address, password, and database
middleware.EnableRedisStoreWithOptions("redis.example.com:6379", "password", 0)
```

#### Method 4: Enable Redis with Custom Configuration

```go
import "github.com/appleboy/gin-jwt/v2/store"

config := &store.RedisConfig{
Addr: "redis.example.com:6379",
Password: "your-password",
DB: 0,
CacheSize: 256 * 1024 * 1024, // 256MB cache
CacheTTL: 5 * time.Minute, // 5 minute cache TTL
KeyPrefix: "myapp-jwt:",
}
}.EnableRedisStore()

middleware.EnableRedisStoreWithConfig(config)
```

#### Method 5: Configure Client-side Cache

```go
// Set client-side cache size and TTL
middleware.SetRedisClientSideCache(64*1024*1024, 30*time.Second) // 64MB cache, 30s TTL
```
// Method 2: Enable Redis with custom address
middleware := &jwt.GinJWTMiddleware{
// ... other configuration
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
)

#### Method 6: Method Chaining
// Method 3: Enable Redis with authentication
middleware := &jwt.GinJWTMiddleware{
// ... other configuration
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 0),
)

```go
// Method 4: Full configuration with all options
middleware := &jwt.GinJWTMiddleware{
// ... other configuration
}.
EnableRedisStoreWithAddr("redis.example.com:6379").
SetRedisClientSideCache(128*1024*1024, time.Minute)
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 1),
jwt.WithRedisCache(128*1024*1024, time.Minute), // 128MB cache, 1min TTL
jwt.WithRedisPool(20, time.Hour, 2*time.Hour), // Pool config
jwt.WithRedisKeyPrefix("myapp:jwt:"), // Key prefix
)
```

#### Available Options

- `WithRedisAddr(addr string)` - Sets Redis server address
- `WithRedisAuth(password string, db int)` - Sets authentication and database
- `WithRedisCache(size int, ttl time.Duration)` - Configures client-side cache
- `WithRedisPool(poolSize int, maxIdleTime, maxLifetime time.Duration)` - Configures connection pool
- `WithRedisKeyPrefix(prefix string)` - Sets key prefix for Redis keys

### Configuration Options

#### RedisConfig
Expand Down Expand Up @@ -514,8 +496,10 @@ func main() {

return nil, jwt.ErrFailedAuthentication
},
}).EnableRedisStoreWithAddr("localhost:6379"). // Enable Redis
SetRedisClientSideCache(64*1024*1024, 30*time.Second) // Configure cache
}).EnableRedisStore( // Enable Redis with options
jwt.WithRedisAddr("localhost:6379"), // Redis server address
jwt.WithRedisCache(64*1024*1024, 30*time.Second), // 64MB cache, 30s TTL
)

if err != nil {
log.Fatal("JWT Error:" + err.Error())
Expand Down
96 changes: 40 additions & 56 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,8 @@
- [Redis 存储配置](#redis-存储配置)
- [Redis 功能特色](#redis-功能特色)
- [Redis 使用方法](#redis-使用方法)
- [方法 1:启用默认 Redis 配置](#方法-1启用默认-redis-配置)
- [方法 2:启用自定义地址的 Redis](#方法-2启用自定义地址的-redis)
- [方法 3:使用完整选项启用 Redis](#方法-3使用完整选项启用-redis)
- [方法 4:使用自定义配置启用 Redis](#方法-4使用自定义配置启用-redis)
- [方法 5:配置客户端缓存](#方法-5配置客户端缓存)
- [方法 6:方法链](#方法-6方法链)
- [使用函数选项模式(推荐)](#使用函数选项模式推荐)
- [可用选项](#可用选项)
- [配置选项](#配置选项)
- [RedisConfig](#redisconfig)
- [回退行为](#回退行为)
Expand Down Expand Up @@ -216,65 +212,51 @@ fmt.Printf("New Refresh Token: %s\n", newTokenPair.RefreshToken)

### Redis 使用方法

#### 方法 1:启用默认 Redis 配置
#### 使用函数选项模式(推荐)

Redis 配置现在使用函数选项模式,提供更清洁且灵活的配置:

```go
// 方法 1:使用默认配置启用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}

// 使用默认设置启用 Redis(localhost:6379)
middleware.EnableRedisStore()
```

#### 方法 2:启用自定义地址的 Redis

```go
// 使用自定义地址启用 Redis
middleware.EnableRedisStoreWithAddr("redis.example.com:6379")
```

#### 方法 3:使用完整选项启用 Redis

```go
// 使用地址、密码和数据库启用 Redis
middleware.EnableRedisStoreWithOptions("redis.example.com:6379", "password", 0)
```

#### 方法 4:使用自定义配置启用 Redis

```go
import "github.com/appleboy/gin-jwt/v2/store"

config := &store.RedisConfig{
Addr: "redis.example.com:6379",
Password: "your-password",
DB: 0,
CacheSize: 256 * 1024 * 1024, // 256MB 缓存
CacheTTL: 5 * time.Minute, // 5 分钟缓存 TTL
KeyPrefix: "myapp-jwt:",
}
}.EnableRedisStore()

middleware.EnableRedisStoreWithConfig(config)
```

#### 方法 5:配置客户端缓存

```go
// 设置客户端缓存大小和 TTL
middleware.SetRedisClientSideCache(64*1024*1024, 30*time.Second) // 64MB 缓存,30秒 TTL
```
// 方法 2:使用自定义地址启用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
)

#### 方法 6:方法链
// 方法 3:使用认证启用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 0),
)

```go
// 方法 4:使用所有选项的完整配置
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.
EnableRedisStoreWithAddr("redis.example.com:6379").
SetRedisClientSideCache(128*1024*1024, time.Minute)
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 1),
jwt.WithRedisCache(128*1024*1024, time.Minute), // 128MB 缓存,1分钟 TTL
jwt.WithRedisPool(20, time.Hour, 2*time.Hour), // 连接池配置
jwt.WithRedisKeyPrefix("myapp:jwt:"), // 键前缀
)
```

#### 可用选项

- `WithRedisAddr(addr string)` - 设置 Redis 服务器地址
- `WithRedisAuth(password string, db int)` - 设置认证和数据库
- `WithRedisCache(size int, ttl time.Duration)` - 配置客户端缓存
- `WithRedisPool(poolSize int, maxIdleTime, maxLifetime time.Duration)` - 配置连接池
- `WithRedisKeyPrefix(prefix string)` - 设置 Redis 键的前缀

### 配置选项

#### RedisConfig
Expand Down Expand Up @@ -349,8 +331,10 @@ func main() {

return nil, jwt.ErrFailedAuthentication
},
}).EnableRedisStoreWithAddr("localhost:6379"). // 启用 Redis
SetRedisClientSideCache(64*1024*1024, 30*time.Second) // 配置缓存
}).EnableRedisStore( // 使用选项启用 Redis
jwt.WithRedisAddr("localhost:6379"), // Redis 服务器地址
jwt.WithRedisCache(64*1024*1024, 30*time.Second), // 64MB 缓存,30秒 TTL
)

if err != nil {
log.Fatal("JWT Error:" + err.Error())
Expand Down
96 changes: 40 additions & 56 deletions README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,8 @@
- [Redis 儲存配置](#redis-儲存配置)
- [Redis 功能特色](#redis-功能特色)
- [Redis 使用方法](#redis-使用方法)
- [方法 1:啟用預設 Redis 配置](#方法-1啟用預設-redis-配置)
- [方法 2:啟用自訂位址的 Redis](#方法-2啟用自訂位址的-redis)
- [方法 3:使用完整選項啟用 Redis](#方法-3使用完整選項啟用-redis)
- [方法 4:使用自訂配置啟用 Redis](#方法-4使用自訂配置啟用-redis)
- [方法 5:配置用戶端快取](#方法-5配置用戶端快取)
- [方法 6:方法鏈](#方法-6方法鏈)
- [使用函數選項模式(推薦)](#使用函數選項模式推薦)
- [可用選項](#可用選項)
- [配置選項](#配置選項)
- [RedisConfig](#redisconfig)
- [回退行為](#回退行為)
Expand Down Expand Up @@ -216,65 +212,51 @@ fmt.Printf("New Refresh Token: %s\n", newTokenPair.RefreshToken)

### Redis 使用方法

#### 方法 1:啟用預設 Redis 配置
#### 使用函數選項模式(推薦)

Redis 配置現在使用函數選項模式,提供更清潔且靈活的配置:

```go
// 方法 1:使用預設配置啟用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}

// 使用預設設定啟用 Redis(localhost:6379)
middleware.EnableRedisStore()
```

#### 方法 2:啟用自訂位址的 Redis

```go
// 使用自訂位址啟用 Redis
middleware.EnableRedisStoreWithAddr("redis.example.com:6379")
```

#### 方法 3:使用完整選項啟用 Redis

```go
// 使用位址、密碼和資料庫啟用 Redis
middleware.EnableRedisStoreWithOptions("redis.example.com:6379", "password", 0)
```

#### 方法 4:使用自訂配置啟用 Redis

```go
import "github.com/appleboy/gin-jwt/v2/store"

config := &store.RedisConfig{
Addr: "redis.example.com:6379",
Password: "your-password",
DB: 0,
CacheSize: 256 * 1024 * 1024, // 256MB 快取
CacheTTL: 5 * time.Minute, // 5 分鐘快取 TTL
KeyPrefix: "myapp-jwt:",
}
}.EnableRedisStore()

middleware.EnableRedisStoreWithConfig(config)
```

#### 方法 5:配置用戶端快取

```go
// 設定用戶端快取大小和 TTL
middleware.SetRedisClientSideCache(64*1024*1024, 30*time.Second) // 64MB 快取,30秒 TTL
```
// 方法 2:使用自訂位址啟用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
)

#### 方法 6:方法鏈
// 方法 3:使用認證啟用 Redis
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 0),
)

```go
// 方法 4:使用所有選項的完整配置
middleware := &jwt.GinJWTMiddleware{
// ... 其他配置
}.
EnableRedisStoreWithAddr("redis.example.com:6379").
SetRedisClientSideCache(128*1024*1024, time.Minute)
}.EnableRedisStore(
jwt.WithRedisAddr("redis.example.com:6379"),
jwt.WithRedisAuth("password", 1),
jwt.WithRedisCache(128*1024*1024, time.Minute), // 128MB 快取,1分鐘 TTL
jwt.WithRedisPool(20, time.Hour, 2*time.Hour), // 連線池配置
jwt.WithRedisKeyPrefix("myapp:jwt:"), // 鍵前綴
)
```

#### 可用選項

- `WithRedisAddr(addr string)` - 設定 Redis 伺服器位址
- `WithRedisAuth(password string, db int)` - 設定認證和資料庫
- `WithRedisCache(size int, ttl time.Duration)` - 配置用戶端快取
- `WithRedisPool(poolSize int, maxIdleTime, maxLifetime time.Duration)` - 配置連線池
- `WithRedisKeyPrefix(prefix string)` - 設定 Redis 鍵的前綴

### 配置選項

#### RedisConfig
Expand Down Expand Up @@ -349,8 +331,10 @@ func main() {

return nil, jwt.ErrFailedAuthentication
},
}).EnableRedisStoreWithAddr("localhost:6379"). // 啟用 Redis
SetRedisClientSideCache(64*1024*1024, 30*time.Second) // 配置快取
}).EnableRedisStore( // 使用選項啟用 Redis
jwt.WithRedisAddr("localhost:6379"), // Redis 伺服器位址
jwt.WithRedisCache(64*1024*1024, 30*time.Second), // 64MB 快取,30秒 TTL
)

if err != nil {
log.Fatal("JWT Error:" + err.Error())
Expand Down
Loading
Loading