Git Product home page Git Product logo

Comments (2)

theoludwig avatar theoludwig commented on August 15, 2024

What I can see socketio-jwt makes sure the jwt is valid and has not expired during the connection phase.

Yes, that's exactly that. If the token expires, you should revalidate yourself, this library doesn't handle this case.
However, you can handle this case client side like this:

import { isUnauthorizedError } from '@thream/socketio-jwt/build/UnauthorizedError.js'

// Handling token expiration
socket.on('connect_error', (error) => {
  if (isUnauthorizedError(error)) {
    console.log('User token has expired')
    // Here you can call your API (e.g: `/refresh-token`) to get a new valid JWT token and then set it (`newValidToken`)
    socket.auth['token'] = newValidToken
  }
})

You can see how I implemented this client side using Axios here: https://github.com/Thream/website/blob/develop/tools/authentication/Authentication.ts

Also you can see how the backend works here: https://github.com/Thream/api/blob/develop/src/services/users/refresh-token/post.ts

from socketio-jwt.

teolag avatar teolag commented on August 15, 2024

Thank you for the response @theoludwig!
I'll will have to figure out how and when to revalidate the token. Either to check the expiration date on each incoming socket event or to add a timeout callback when the connection is made.

When looking at the code examples you sent, you revalidate the token for each incoming http call, right? So if the user only uses the websocket when the token has expired, nothing will stop it if I'm correct?
Maybe your app requires the user to send http calls from time to time. The thing I'm doing right now lets the user only use websocket for communication so it would be good to make sure no incoming events gets through after the token has expired.

from socketio-jwt.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.