session-management · secondsky — скилл для Claude Code: JWT, Redis и сессии
Скилл для ИИ-кодинга, который помогает собрать вход в аккаунт: JWT-токены, хранение сессий в Redis, обновление токена и настройка cookie.
npx skills add secondsky/claude-skills --skill session-management -a claude-codeЧто делает session-management
Скилл описывает, как устроить сессии на токенах. Внутри — примеры на JavaScript: генерация пары access и refresh токенов через jsonwebtoken, класс SessionStore поверх клиента redis с методами создания сессии и сброса всех сессий пользователя, конфигурация cookie с флагами httpOnly, secure и sameSite, а ещё обработчик POST /auth/refresh, который проверяет тип токена и выдаёт новую пару.
Отдельным блоком идут требования безопасности: работать только по HTTPS, ставить httpOnly и sameSite, ограничивать срок жизни токенов, держать свои секреты для каждого окружения и проверять подпись на каждом запросе. Там же список того, чего делать нельзя: класть чувствительные данные в токен, передавать токен через параметры URL, брать слабый или общий секрет, пропускать проверку подписи.
Код опирается на переменные окружения JWT_SECRET, REFRESH_SECRET и SESSION_SECRET. Если их не задать, примеры не заработают — это повод проверить конфигурацию до того, как код уйдёт на прод. Скилл даёт шаблоны, а не готовую библиотеку: вставлять их придётся в свой проект и подгонять под свою схему данных.
Какие задачи решает
- сгенерировать пару access и refresh токенов для пользователя
- хранить активные сессии в Redis и сбрасывать их все разом
- настроить cookie с httpOnly, secure и sameSite
- сделать эндпоинт обновления токена с проверкой его типа
- закрыть типовые дыры вроде передачи токена через URL
Примеры запросов агенту
- добавь в проект вход по JWT: access на час, refresh на семь дней
- сделай хранение сессий в Redis с методом сброса всех сессий пользователя
- проверь настройки cookie для сессии: httpOnly, secure, sameSite
Как установить session-management
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill session-management -a claude-code2Вручную: положить файлы
~/.claude/skills/session-management/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/session-management/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill session-management -a codex2Вручную: положить файлы
.agents/skills/session-management/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill session-management -a cursor2Вручную: положить файлы
.cursor/skills/session-management/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install secondsky/claude-skills session-management2Вручную: положить файлы
.github/skills/session-management/SKILL.md1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill session-management -a gemini-cli2Командой платформы
gemini skills install https://github.com/secondsky/claude-skills --path plugins/session-management/skills/session-managementВручную: положить файлы
.devin/skills/session-management/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill session-management -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора89
Другие версии session-management
Похожие
Рядом в теме «Безопасность»
Всё по теме «Безопасность» →Вопросы о session-management
Как установить session-management в Claude?
Выполните npx skills add secondsky/claude-skills --skill session-management -a claude-code. После этого файл скилла окажется в ~/.claude/skills/session-management/SKILL.md.
Что делает session-management?
Показывает, как собрать сессии на JWT: генерация токенов, хранение в Redis, обновление по refresh-токену и настройка cookie. Плюс список требований безопасности и типовых ошибок.
Что нужно для работы примеров из скилла?
Пакеты jsonwebtoken и redis и переменные окружения JWT_SECRET, REFRESH_SECRET, SESSION_SECRET. Без секретов код из примеров не запустится.
Исходный текст
SKILL.md · MIT
---
name: session-management
description: Implements secure session management with JWT tokens, Redis storage, refresh flows, and proper cookie configuration. Use when building authentication systems, managing user sessions, or implementing secure logout functionality.
license: MIT
---
# Session Management
Implement secure session management with proper token handling and storage.
## Token-Based Sessions
```javascript
const jwt = require('jsonwebtoken');
function generateTokens(user) {
const accessToken = jwt.sign(
{ userId: user.id, role: user.role, type: 'access' },
process.env.JWT_SECRET,
{ expiresIn: '1h' }
);
const refreshToken = jwt.sign(
{ userId: user.id, type: 'refresh' },
process.env.REFRESH_SECRET,
{ expiresIn: '7d' }
);
return { accessToken, refreshToken };
}
```
## Redis Session Storage
```javascript
const redis = require('redis');
const client = redis.createClient();
class SessionStore {
async create(userId, sessionData) {
const sessionId = crypto.randomUUID();
await client.hSet(`sessions:${userId}`, sessionId, JSON.stringify({
...sessionData,
createdAt: Date.now()
}));
await client.expire(`sessions:${userId}`, 86400 * 7);
return sessionId;
}
async invalidateAll(userId) {
await client.del(`sessions:${userId}`);
}
}
```
## Cookie Configuration
```javascript
app.use(session({
name: 'session',
secret: process.env.SESSION_SECRET,
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'strict',
maxAge: 3600000, // 1 hour
domain: '.example.com'
},
resave: false,
saveUninitialized: false
}));
```
## Token Refresh Flow
```javascript
app.post('/auth/refresh', async (req, res) => {
const { refreshToken } = req.cookies;
try {
const payload = jwt.verify(refreshToken, process.env.REFRESH_SECRET);
if (payload.type !== 'refresh') throw new Error('Invalid token type');
const user = await User.findById(payload.userId);
const tokens = generateTokens(user);
res.cookie('accessToken', tokens.accessToken, cookieOptions);
res.json({ success: true });
} catch (err) {
res.status(401).json({ error: 'Invalid refresh token' });
}
});
```
## Security Requirements
- Use HTTPS exclusively
- Set httpOnly and sameSite on cookies
- Implement proper token expiration
- Use strong, unique secrets per environment
- Validate signatures on every request
## Never Do
- Store sensitive data in tokens
- Transmit tokens via URL parameters
- Use weak or shared secrets
- Skip signature validation
© secondsky · MIT · secondsky/claude-skills