Skip to content

Feature: Production-grade device session management (device tracking, active sessions, logout, location support) #12

@abhishek-nexgen-dev

Description

@abhishek-nexgen-dev

Problem

Current session model includes:

deviceId: { type: String, required: true },
ip: String,
userAgent: String,
lastActiveAt: { type: Date, default: Date.now }

But deviceId strategy is incomplete for production use.

Browsers do not expose a true hardware device ID, so we need a secure production-grade solution for:

  • Device identification
  • Active session tracking
  • Session management
  • Logout from current device
  • Logout from all devices
  • Device location metadata
  • Suspicious login detection
  • Token/session invalidation

Proposed Solution

Implement a proper device/session management system.

Add fields to session model

userId
sessionId
deviceId
deviceName
browser
os
ip
location
userAgent
refreshTokenHash
isActive
lastActiveAt
createdAt

Device Identification

Use fingerprint-based device identification instead of hardware device IDs.

Evaluate:

  • FingerprintJS
  • UUID + trusted device registration
  • Hybrid fingerprint + session-based approach

Required Features

Active Sessions

Users should see:

  • Current device
  • Other logged-in devices
  • Last active timestamp
  • IP
  • Approximate location
  • Browser / OS

Logout Support

Implement:

  • Logout current device
  • Logout single selected device
  • Logout all devices

This should revoke refresh tokens and invalidate sessions server-side.


Location Support

Add approximate geo lookup from IP:

Possible providers:

  • MaxMind
  • ipapi
  • mmdb-lib
  • ipinfo

Store:

country
city
region

Security Considerations

Need protection for:

  • Refresh token theft
  • Session hijacking
  • Suspicious IP change
  • Device spoofing
  • Stolen persistent sessions

Consider:

  • Hashed refresh tokens
  • Session rotation
  • Device trust flags
  • Risk detection

API Endpoints Needed

GET    /sessions
DELETE /sessions/current
DELETE /sessions/:id
DELETE /sessions/logout-all

Acceptance Criteria

  • Production-grade device identification implemented

  • Multi-device session tracking works

  • Active sessions visible to users

  • Logout current device works

  • Logout all devices works

  • Location metadata stored

  • Refresh token revocation implemented

  • Security review completed


Notes

This should be designed similar to:

  • Google Account device sessions

  • GitHub active sessions

  • Discord session management

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions