Skip to content

获取已登录用户信息指南

这个功能是什么?

想象一下,当用户登录到系统后,我们经常需要知道:

  • 这个用户叫什么名字?
  • 他有哪些权限?
  • 他可以访问哪些功能?

这个指南就是教你如何获取这些用户信息。

使用前提

  1. 用户必须已经成功登录系统
  2. 你需要拿到登录后获得的访问令牌(authorization)

具体步骤

1. 配置你的系统

首先,在你的配置文件(application.ymlapplication.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. 返回的数据不完整

可能原因:

  • ✗ 用户权限不足
  • ✗ 用户信息保存不完整

解决方法:

  • ✓ 检查用户权限设置
  • ✓ 确认用户信息是否完整保存

安全提醒

⚠️ 重要安全提示:

  1. 访问令牌要保密,不要泄露给他人
  2. 定期更换访问令牌
  3. 及时清理过期的用户信息

需要帮助?

如果遇到问题,可以这样做:

  1. 📝 查看日志文件:./logs/gateway.log
  2. 🔍 检查Redis中的用户信息
  3. 🌐 确认网络连接正常
  4. 📋 检查配置文件格式是否正确

小贴士

  1. 💡 建议在开发环境下适当延长令牌过期时间,方便调试
  2. 💡 可以使用Redis可视化工具查看用户数据
  3. 💡 定期清理过期的会话数据,避免Redis占用过多内存