# RuntimeError: 会话不可用，因为未设置密钥。请为应用设置唯一且保密的 secret_key。

- **ID:** `python/flask-secret-key-must-be-set`
- **领域:** python
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

app.secret_key 为 None 或空，但 session、flash 或 CSRF（Flask-WTF）需要签名。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 2.x | active | — | — |
| 3.x | active | — | — |

## 解决方案

1. **** (95% 成功率)
   ```
   app.config['SECRET_KEY'] = os.environ['FLASK_SECRET_KEY']  # set a 32+ byte random value in env
   ```
2. **** (90% 成功率)
   ```
   Generate once: `python -c 'import secrets; print(secrets.token_hex(32))'` and store in .env / secrets manager.
   ```

## 无效尝试

- **** — Committed secret leaks; session forgery risk. (95% 失败率)
- **** — Rotates key each request; sessions invalidate immediately. (90% 失败率)
