allow one concurrent user per login with JWT

前端 未结 5 938
闹比i
闹比i 2020-12-16 15:13

We developing an application with Laravel/PHP and we want to use an pay-per-user pricing model. For that we have to ensure that an account can only used by only one concurre

5条回答
  •  一向
    一向 (楼主)
    2020-12-16 15:51

    I think that the simple answer to this is NO, you cannot do that by JWT and keep the server stateless. However, if you use the setup with an Access Token and a Refresh Token, you can probably achieve something like this:

    1. A user logs in, you store the Refresh Token in a DB
    2. The Access Token expires. Before you issue a new Access Token from your Refresh Token, make the standard check that the account is still OK, but also compare the Refresh Token to the one in your DB. Make sure they match.
    3. A second user logs in with the same account. Store the issues Refresh Token in the DB and over write the old Refresh Token. (One stored Refresh Token per account.)
    4. First users Access Token expires again. This time there is another Refresh Token in the DB, and no new Access Token is issued for that user.

    This will result in a login flow where the latest user to login can use your service. This is handy if it actually is the same user that change device or restart browser session. Compare to for example Spotify's "chasing the stream" way of handling concurrent listening.

提交回复
热议问题