context.user is empty on api endpoint
this example i'm trying from the tutorial, regardless of auth:true/false has null as context.user, any ideas why?
2 Replies
Hi @devrim. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
The
context.user
object is populated when authentication is enabled and a valid JWT token is present in the request. If context.user
is null
, it could be due to one of the following reasons:
1. Authentication is not enabled: Ensure that you have enabled authentication in your Wasp application. If auth
is set to false
, the JWT token in the Authorization Header will not be parsed and context.user
will not be populated.
2. No valid JWT token in the request: If there is no valid JWT token in the request, context.user
will be null
. Make sure that you are sending a valid JWT token in the Authorization Header of your request.
3. The user does not exist in the database: If the JWT token is valid but the user does not exist in the database, context.user
will be null
. Make sure that the user exists in the database.
If you have checked all of the above and context.user
is still null
, it could be a bug. In that case, you might want to open an issue on the Wasp Github repository (https://github.com/wasp-lang/wasp/issues).
For more information, you can refer to the following sources:
- Defining the API's NodeJS Implementation (https://wasp-lang.dev/docs/advanced/apis#defining-the-apis-nodejs-implementation)
- API Reference (https://wasp-lang.dev/docs/advanced/apis#api-reference)
- Using the context.user
object (https://wasp-lang.dev/docs/auth/overview#using-the-contextuser-object)
- Revisit our auth
middleware behaviour (https://github.com/wasp-lang/wasp/issues/1133)
- Provide more information during development when error happens on server (https://github.com/wasp-lang/wasp/issues/91)
- Use declare global
to declare Wasp specific fields in the Express request (https://github.com/wasp-lang/wasp/issues/1632)
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
Sorry @devrim, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist:
Perhaps try again in 15mins?Read this pls: https://wasp-lang.dev/docs/advanced/apis#using-the-api-from-the-client
To use the API from your client, including with auth support, you can import the Axios wrapper from wasp/client/api and invoke a call.
Custom HTTP API Endpoints | Wasp
In Wasp, the default client-server interaction mechanism is through Operations. However, if you need a specific URL method/path, or a specific response, Operations may not be suitable for you. For these cases, you can use an api. Best of all, they should look and feel very familiar.