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(特别是由于使用客户端密码)。这也是它在开发模式下工作但在部署时不工作的最可能原因。