Once an application allows a user to be logged in from multiple devices at the same time, the first design decision is whether concurrent sessions are allowed at all and, if they are, how many.
There are three common models:
Unlimited concurrent sessions:
The simplest approach is to allow a user to create as many active sessions as they need.
A user might be logged in simultaneously from a laptop, phone, tablet, work computer, and several browsers. Each login creates another independently valid session.
User account
βββ Laptop session
βββ Phone session
βββ Tablet session
βββ Work browser session
βββ Another browser session
β
All remain active until they expire,
are explicitly revoked, or are otherwise invalidated
This provides the least friction for the user, but it also increases the number of active credentials associated with the account. A session created months ago and potentially forgotten or compromised may remain active alongside the user's current sessions.
A Fixed Session Limit:
Another approach is to allow multiple sessions but impose a maximum.
For example, an application might permit five active sessions per account.
User already has 5 active sessions
β
User logs in from a new device
β
Application must choose:
β Reject the new login
OR
β Invalidate one existing session,
often the oldest or least recently used
β
Maximum session count maintained
This places an upper bound on the number of active credentials while still allowing normal multi-device use.
The important design question is what happens when the limit is reached. Silently evicting an older session may be convenient, but it can also create confusing behavior for the user. Rejecting the new login makes the limit explicit but introduces more friction.
Single Session Enforcement:
The strictest model allows only one active session at a time.
User logs in on Device A
β
Session A is active
β
User logs in on Device B
β
Session A is invalidated
β
Only Session B remains active
This reduces the number of simultaneously valid credentials and can simplify session management. However, it is often a poor fit for applications where users reasonably expect to move between multiple devices.
A user may legitimately want to remain logged in on both a laptop and a phone. For many consumer applications, supporting concurrent sessions is therefore a baseline expectation rather than an optional feature.
Choosing the Right Model:
None of these models is universally correct.
A high-sensitivity environment such as an administrative interface or financial application may reasonably impose tighter session limits or use single-session enforcement for certain operations. A general consumer platform will usually need to support multiple concurrent devices.
The important point is that the choice should be deliberate.
But regardless of which model is chosen, the application needs one fundamental capability:
It must know which sessions currently exist for each account.
User account
β
Central session inventory
βββ Session ID A β Laptop
βββ Session ID B β Phone
βββ Session ID C β Tablet
βββ Session ID D β Work browser
β
Application can query, manage,
and revoke individual or all sessions
This requires server-side session state that can track all currently active sessions associated with an account, not merely the most recently created one.
Without that inventory, the application cannot reliably answer questions such as:
How many active sessions does this user have?
Which session belongs to the current device?
Which sessions should be invalidated after a password change?
Can the user revoke a specific device?
What does "log out of all devices" actually mean?
Which credentials remain valid after suspected account compromise?
If a password change or a "this account may be compromised" event is supposed to invalidate every active session, the application must be able to identify what every active session means for that account at that moment.
Password changed
or account compromise suspected
β
Find all active sessions
associated with this account
β
Session A β Invalidated
Session B β Invalidated
Session C β Invalidated
Session D β Invalidated
β
No previously issued session credential
remains valid
This is why session management cannot be treated as merely a client-side cookie problem.
The cookie is only the credential the browser presents. The application needs corresponding server-side stateβor an equivalent centrally enforceable mechanismβthat allows it to determine whether that credential is still valid and what account it belongs to.