Nuxt 授权用户始终为空
Nuxt auth user always null
我刚刚将我的 nuxt 应用从开发模式切换到生产模式。
它使用 @nuxtjs/auth-next
,在开发版本中,一切都很好用。
今天刚把网站部署到cloudflare pages,从那以后this.$auth.user
属性一直是null,即使登录两次三次,auth用户也一直是null强制我重新登录。
我能做什么?
login.vue
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
name: 'Login',
mounted() {
this.$auth.loginWith('discord')
},
head: {
title: "Login | Abred"
},
})
</script>
回调设置为/
并且主页还没有处理任何与oauth相关的事情。
可能不是 cloudflare 问题,因为与 vercel 的行为相同。
Nuxt 配置:
export default {
head: {
title: 'Abred',
htmlAttrs: {
lang: 'en',
},
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: 'Abred the only bot you shall need for managing temporary voice channels!' },
{ name: 'format-detection', content: 'telephone=no' },
],
link: [
{ rel: 'icon', type: 'image/png', href: '/assets/transparent-logo.png' },
{
rel: "stylesheet",
href: 'https://fonts.googleapis.com/icon?family=Material+Icons'
}],
},
css: [
"./styles/globals.scss"
],
plugins: [],
components: true,
buildModules: [
'@nuxt/typescript-build',
'@nuxtjs/tailwindcss',
],
modules: [
'@nuxtjs/axios',
'@nuxtjs/auth-next',
'@nuxtjs/toast',
'@nuxtjs/dotenv',
],
auth: {
strategies: {
discord: {
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
}
},
redirect: {
callback: '/',
}
},
axios: {
baseURL: 'https://api.abred.bar',
},
build: {},
}
现场演示:
登录:https://abred.bar/login
登录后访问的页面:https://abred.bar/manage
请帮助我。
刚注意到
在开发模式下,令牌的 cookie 存在,但在生产模式下它们不存在
您通过静态网站生成 (target: static
) 部署您的应用程序。
据我所知,您需要一个服务器 运行 用于通过 nuxt-auth@next
的 oAuth2(特别是由于使用客户端密码)。这也是它在开发模式下工作但在部署时不工作的最可能原因。
我刚刚将我的 nuxt 应用从开发模式切换到生产模式。
它使用 @nuxtjs/auth-next
,在开发版本中,一切都很好用。
今天刚把网站部署到cloudflare pages,从那以后this.$auth.user
属性一直是null,即使登录两次三次,auth用户也一直是null强制我重新登录。
我能做什么?
login.vue
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
name: 'Login',
mounted() {
this.$auth.loginWith('discord')
},
head: {
title: "Login | Abred"
},
})
</script>
回调设置为/
并且主页还没有处理任何与oauth相关的事情。
可能不是 cloudflare 问题,因为与 vercel 的行为相同。
Nuxt 配置:
export default {
head: {
title: 'Abred',
htmlAttrs: {
lang: 'en',
},
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: 'Abred the only bot you shall need for managing temporary voice channels!' },
{ name: 'format-detection', content: 'telephone=no' },
],
link: [
{ rel: 'icon', type: 'image/png', href: '/assets/transparent-logo.png' },
{
rel: "stylesheet",
href: 'https://fonts.googleapis.com/icon?family=Material+Icons'
}],
},
css: [
"./styles/globals.scss"
],
plugins: [],
components: true,
buildModules: [
'@nuxt/typescript-build',
'@nuxtjs/tailwindcss',
],
modules: [
'@nuxtjs/axios',
'@nuxtjs/auth-next',
'@nuxtjs/toast',
'@nuxtjs/dotenv',
],
auth: {
strategies: {
discord: {
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
}
},
redirect: {
callback: '/',
}
},
axios: {
baseURL: 'https://api.abred.bar',
},
build: {},
}
现场演示: 登录:https://abred.bar/login 登录后访问的页面:https://abred.bar/manage
请帮助我。
刚注意到
在开发模式下,令牌的 cookie 存在,但在生产模式下它们不存在
您通过静态网站生成 (target: static
) 部署您的应用程序。
据我所知,您需要一个服务器 运行 用于通过 nuxt-auth@next
的 oAuth2(特别是由于使用客户端密码)。这也是它在开发模式下工作但在部署时不工作的最可能原因。