关于 session-management
这项技能介绍如何在不同后端框架中实现会话管理,涵盖安全令牌处理、持久化、刷新、注销和 CSRF 防护,并提供 JWT、Redis 存储、中间件及会话维护指南。
主要功能
- 01安全令牌处理
- 02会话持久化
- 03令牌刷新机制
- 04注销流程
- 05CSRF 防护
- 06会话清理指南
适用场景
- 01实现用户身份验证
- 02管理会话状态和用户上下文
- 03处理 JWT 刷新周期
- 04防护状态变更请求中的 CSRF
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill session-management安装后在 Claude Code 中输入/session-management确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/csrf-protection.mdjwt-token-generation-and-validation.mdnodejsexpress-jwt-implementation.mdsession-cleanup-and-maintenance.mdsession-middleware-chain.mdsession-storage-with-redis.mdtoken-refresh-endpoint.mdscripts/security-checklist.sh详细介绍
会话管理
目录
概述
在不同后端框架中实现完善的会话管理系统,包括安全的令牌处理、会话持久化、令牌刷新机制、规范的登出流程以及 CSRF 防护。
适用场景
- 实现用户身份验证系统
- 管理会话状态和用户上下文
- 处理 JWT 令牌刷新周期
- 实现登出功能
- 防范 CSRF 攻击
- 管理会话过期和清理
快速入门
最简可运行示例:
# Python/Flask Example
from flask import current_app
from datetime import datetime, timedelta
import jwt
import os
class TokenManager:
def __init__(self, secret_key=None):
self.secret_key = secret_key or os.getenv('JWT_SECRET')
self.algorithm = 'HS256'
self.access_token_expires_hours = 1
self.refresh_token_expires_days = 7
def generate_tokens(self, user_id, email, role='user'):
"""Generate both access and refresh tokens"""
now = datetime.utcnow()
# Access token
access_payload = {
'user_id': user_id,
'email': email,
'role': role,
'type': 'access',
'iat': now,
'exp': now + timedelta(hours=self.access_token_expires_hours)
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| JWT 令牌生成与验证 | JWT 令牌生成与验证 |
| Node.js/Express JWT 实现 | Node.js/Express JWT 实现 |
| 使用 Redis 存储会话 | 使用 Redis 存储会话 |
| CSRF 防护 | CSRF 防护 |
| 会话中间件链 | 会话中间件链 |
| 令牌刷新端点 | 令牌刷新端点 |
| 会话清理与维护 | 会话清理与维护 |
最佳实践
✅ 应该做
- 所有会话传输都使用 HTTPS
- 使用安全 Cookie(httpOnly、sameSite、secure 标志)
- 使用过期时间设置合理的 JWT
- 实现令牌刷新机制
- 安全存储刷新令牌
- 在每次请求时验证令牌
- 使用强度足够的密钥
- 实现会话超时
- 记录身份验证事件
- 登出时清除会话数据
- 对会更改状态的请求使用 CSRF 令牌
❌ 不应该做
- 在令牌中存储敏感数据
- 使用较短的密钥
- 在 URL 中传输令牌
- 忽略令牌过期
- 在不同环境中重复使用令牌密钥
- 将令牌存储在 localStorage 中(请使用 httpOnly Cookie)
- 在没有 HTTPS 的情况下实现会话
- 忘记验证令牌签名
- 在日志中暴露会话 ID
- 使用可预测的会话 ID
评论
支持 Markdown