外观
获取已登录用户信息指南
这个功能是什么?
想象一下,当用户登录到系统后,我们经常需要知道:
- 这个用户叫什么名字?
- 他有哪些权限?
- 他可以访问哪些功能?
这个指南就是教你如何获取这些用户信息。
使用前提
- 用户必须已经成功登录系统
- 你需要拿到登录后获得的访问令牌(authorization)
具体步骤
1. 配置你的系统
首先,在你的配置文件(application.yml
或application.yaml
)中添加以下设置:
yaml
wueasy:
gateway:
filter:
session:
enabled: true # 打开用户会话功能
items:
- type: redis # 使用redis来存储用户信息
redis-auto-expire: true # 用户信息会自动延期
expire: PT1H # 设置过期时间为1小时
urls:
- /demo/** # 所有需要验证用户身份的地址
user-login-urls: /demo/login # 登录接口地址
user-get-info-urls: /demo/getInfo # 获取用户信息的接口地址
security-visitor-urls: # 不需要登录就能访问的接口
- /demo/login
- /demo/captcha
security-login-urls: # 登录后才能访问的接口
- /demo/getInfo
# Redis数据库配置
spring:
data:
redis:
database: 9
host: 127.0.0.1 # Redis服务器地址
port: 6379 # Redis端口号
password: 123456 # Redis密码
timeout: 3000 # 连接超时时间
2. 如何获取用户信息
发送请求
http
POST http://127.0.0.1:8080/demo/getInfo
需要在请求头中添加:
authorization: demo:1:2f202192dd2744b9f5589080d765e43e
这个authorization
就是用户登录成功后获得的访问令牌,必须带上它!
完整的请求示例:
shell
curl --location --request POST "http://127.0.0.1:8080/demo/getInfo" \
--header "authorization: demo:1:2f202192dd2744b9f5589080d765e43e"
返回的用户信息示例:
json
{
"code": 0, // 0表示成功
"successful": true, // true表示成功
"data": {
"nickname": "wueasy", // 用户昵称
"authorizeCodeList": [ // 用户权限列表
"user"
]
}
}
常见问题和解决方案
1. 提示"未登录"或"无权限"
可能原因:
- ✗ 访问令牌已过期(默认1小时后过期)
- ✗ 访问令牌格式错误
- ✗ Redis服务器连接不上
解决方法:
- ✓ 重新登录获取新的访问令牌
- ✓ 检查访问令牌格式是否正确
- ✓ 确认Redis服务是否正常运行
2. 获取不到用户信息
可能原因:
- ✗ 配置文件中的路径配置错误
- ✗ Redis中的用户数据已被清除
解决方法:
- ✓ 检查配置文件中的
user-get-info-urls
配置 - ✓ 确认Redis中是否存在用户数据
3. 返回的数据不完整
可能原因:
- ✗ 用户权限不足
- ✗ 用户信息保存不完整
解决方法:
- ✓ 检查用户权限设置
- ✓ 确认用户信息是否完整保存
安全提醒
⚠️ 重要安全提示:
- 访问令牌要保密,不要泄露给他人
- 定期更换访问令牌
- 及时清理过期的用户信息
需要帮助?
如果遇到问题,可以这样做:
- 📝 查看日志文件:
./logs/gateway.log
- 🔍 检查Redis中的用户信息
- 🌐 确认网络连接正常
- 📋 检查配置文件格式是否正确
小贴士
- 💡 建议在开发环境下适当延长令牌过期时间,方便调试
- 💡 可以使用Redis可视化工具查看用户数据
- 💡 定期清理过期的会话数据,避免Redis占用过多内存