its pretty simple. when the user logins, update the users unique value in a database table, and also store the guid in a cookie. then on every request, read the database value and compare to the cookie value. if they do not match, logout user.
this is the last login wins approach.
asp.net core identity has this built in support to write the stamp on login, and add the claim to the cookie:
the next question is how often to check. you can check the security stamp claim on every request via cookie authentication callback.