Help us learn about your current experience with the documentation. Take the survey.

活跃会话

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

GitLab 会列出所有已登录您账户的设备。您可以 查看这些会话,并撤销任何您不认识的会话。

列出所有活跃会话

要列出所有活跃会话:

  1. 在左侧边栏中,选择您的头像。
  2. 选择 编辑个人资料
  3. 在左侧边栏中,选择 活跃会话

Active sessions list

活跃会话限制

GitLab 允许用户同时拥有最多 100 个活跃会话。如果活跃会话数量 超过 100,最旧的会话将被删除。

撤销会话

要撤销一个活跃会话:

  1. 在左侧边栏中,选择您的头像。
  2. 选择 编辑个人资料
  3. 在左侧边栏中,选择 活跃会话
  4. 选择会话旁边的 撤销。当前会话无法撤销,因为这会使您退出 GitLab。

当任何会话被撤销时,所有设备的 记住我 令牌都会被撤销。有关 记住我 的详细信息,请参阅 登录使用的 cookies

通过 Rails 控制台撤销会话

您也可以通过 Rails 控制台撤销用户会话。您可以使用此功能同时撤销 多个会话。

撤销所有用户的所有会话

要撤销所有用户的所有会话:

  1. 启动 Rails 控制台会话

  2. 可选。使用以下命令列出所有活跃会话:

    ActiveSession.list(User.all)
  3. 使用以下命令撤销所有会话:

    ActiveSession.destroy_all
  4. 使用以下命令验证会话已关闭:

    # 显示所有有活跃会话的用户
     puts "=== 当前登录用户 ==="
     User.find_each do |user|
         sessions = ActiveSession.list(user)
         if sessions.any?
             puts "\n#{user.username} (#{user.name}):"
             sessions.each do |session|
                 puts "  - IP: #{session.ip_address}, 浏览器: #{session.browser}, 最后活跃时间: #{session.updated_at}"
             end
         end
     end

撤销单个用户的所有会话

要撤销特定用户的所有会话:

  1. 启动 Rails 控制台会话

  2. 使用以下命令查找用户:

    • 通过用户名:

      user = User.find_by_username 'exampleuser'
    • 通过用户 ID:

      user = User.find(123)
    • 通过电子邮件地址:

      user = User.find_by(email: 'user@example.com')
  3. 可选。使用以下命令列出该用户的所有活跃会话:

    ActiveSession.list(user)
  4. 使用以下命令撤销所有会话:

    ActiveSession.list(user).each { |session| ActiveSession.destroy_session(user, session.session_private_id) }
  5. 使用以下命令验证所有会话已关闭:

    # 如果所有会话都已关闭,将返回空数组。
    ActiveSession.list(user)