Comments (2)
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.
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)
- jwks-RSA Support HOT 6
- After Authorize events are not firing HOT 4
- [Improvement] Update `jest` to `27.x` HOT 1
- Client side usage example has errors. HOT 2
- [Improvement] Usage of `semantic-release` HOT 1
- Server-side authorize function does not work as advertised in README example HOT 4
- [Feature] Alternative to "auth" for requiring bearer token HOT 1
- Types for Connect Error HOT 2
- [Question] How to use RS256 algorithm instead of HS256? HOT 1
- No timeout option? HOT 5
- [Bug] Doesn't work with React 18 HOT 2
- [Feature] Bump jsonwebtoken to v9.0.0 HOT 3
- [Question] How can I use this plugin with 'require'? HOT 2
- [Feature] Add support for WebSocket as transport HOT 5
- Add encoded and decoded token to socket type HOT 2
- [Feature] Addition of a configurable user property to the socket object HOT 2
- [Improvement] Usage of ESM imports instead of CommonJS HOT 2
- [Improvement] Rename the package from `@thream/socketio-jwt` to `socket.io-jwt` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from socketio-jwt.