NuxtN
Nuxt9mo ago
Pablo

[Solved] Storing a user object globally

Greetings! I want to store a user object globally after parsing a JWT in a server plugin, and I seem to only get this partially right. Why am I doing this? Because where my Nuxt app is deployed, authentication happens before the web traffic reaches the Nuxt app. In the request I can see a header with the JWT that has the user info.

What I want to happen (which I accomplished easily in Flask in my previous website) is:
  1. before any page loads, check if there is a user already in a context/global object. If so, continue. If not, we need to check the request header.
  2. parse the JWT in the request header
  3. get the user data from a local database
  4. store the user object in a app-level state somewhere
  5. get the user info in the templates
My solution, which is detailed in this StackOverflow question https://stackoverflow.com/questions/79410348/how-to-store-global-user-object-in-nuxt3-server-middleware/79422062#79422062, is to use a server plugin to parse the JWT and a composable "useUser" to store the user state. I can view the user in my templates, which is great. But, in my server plugin, before checking for a JWT, I am not able to check if a user is already in the state. It is always null. I have tried using the nuxtApp, nuxtApp.payload.state, and my useUser composable. This means I have to parse the JWT and fetch the user from a database on every single request.

I appreciate any insight into how I can solve this problem, even if it's something different than this current solution. Thanks!
Stack Overflow
Using Nuxt 3. Currently I can parse a JWT in the server middleware to get the logged in user, but I want to save that logged in user info to a global variable. Then, on the client side I want to ge...
Was this page helpful?