Se um token possuir requisições de IPs diferentes com um tempo muito curto entre elas, devemos invalidar o token, e redirecionar qualquer requisição ligada a ele para a tela de login.
Esta maneira possui algumas falhas, mas já dificulta bastante as tentativas de roubo de sessão devido ao fato de o token ser constantemente atualizado.
As requisições de inserção e atualização ao banco de dados vai aumentar bastante para esse modelo. Para evitar problemas, este modelo deve ser baseado em bancos não relacionais ou utilizar uma camada de cache como o memcached, que irá receber todas as requisições e de tempos em tempos, atualizar o banco de dados.
Devemos alertar sempre o usuário quando mais de uma sessão com estiver ativa, e fornecer a possibilidade de invalidar todos os tokens, e realizar o login novamente.
Nunca devemos possibilitar a troca de senha sem ter uma maneira de validar a autenticidade de quem está alterando.