Pathing logic in NuxtAuth
This page is here to clarify how the pathing logic works in @sidebase/nuxt-auth. You can find a full overview of how URLs are handled in the issue comment and in spec files for authjs provider and local provider.
baseURL is a prefix
It will be prepended to a path before making a call. For example,
export default defineNuxtConfig({
auth: {
baseURL: 'https://example.com/api/auth',
provider: {
type: 'local',
endpoints: {
// The call would be made to `https://example.com/api/auth/login`
signIn: { path: '/login', method: 'post' },
}
}
}
})Use URL provided in endpoints if it is fully specified
If you provide a full URL to endpoints, it will be used when making calls to an endpoint:
export default defineNuxtConfig({
auth: {
baseURL: 'https://your.website/api',
provider: {
type: 'local',
endpoints: {
// This will call `https://example.com/user`
getSession: { path: 'https://example.com/user' },
// This will call `https://your.website/api/login`
signIn: { path: '/login', method: 'post' },
},
}
}
})runtimeConfig
Value of baseURL is always located at runtimeConfig.public.auth.baseURL. You cannot change it directly as of the moment of writing, but you can read the value in your application:
const runtimeConfig = useRuntimeConfig()
const baseURL = runtimeConfig.public.auth.baseURLThis value is generally the source of truth. It is being set in the plugin to also be available on the client.
Changing baseURL
Read next to understand how it can be changed.
1. Environment variables
You have multiple ways of changing the baseURL via env variables:
- use
NUXT_PUBLIC_AUTH_BASE_URL; - use
AUTH_ORIGINiforiginEnvKeyis not set; - use the environment variable name set in
originEnvKey
Environment variables should work in both build-time and runtime.
2. baseURL
If you didn't set an environment variable, NuxtAuth will look for auth.baseURL inside the nuxt.config.ts.
Note that this variable is always static, will only be set during build and can still be overriden in runtime using env variables.
Not setting baseURL will default to /api/auth.
3. authjs only: determine origin automatically from the incoming HTTP request
When the server is running in development mode, NuxtAuth can automatically infer baseURL from the incoming request.
We recommend the following setup to configure your AUTH_ORIGIN or baseURL:
export default defineNuxtConfig({
// ... other configuration
auth: {
baseUrl: 'https://my-backend.com/api/auth',
// This is technically not needed as it is the default, but it's here for illustrative purposes
originEnvKey: 'AUTH_ORIGIN',
}
})AUTH_ORIGIN="https://my-backend.com/api/auth" // [!code ++]