Laravel/Sanctum 用户获取问题,使用 auth-next

标签 laravel nuxt.js laravel-sanctum nuxt-auth

我正在尝试为受 Sanctum 保护的 Laravel REST API 创建 SPA

现在,在我的 SPA 上,用户可以毫无问题地登录,并且 API 会发回 token ;但 SPA 不会获取用户。我的意思是,它甚至不尝试获取它;没有错误,没有请求,什么也没有。登录和注销工作完美,但我无法获取用户。

这是我的身份验证模块(v5)的配置:

auth: {
    strategies: {
      laravelSanctum: {
        provider: 'laravel/sanctum',
        url: 'https://XXXXXXXXXXXXX/api',
        token: {
          property: 'access_token',
          required: true,
          type: 'Bearer'
        },
        endpoints: {
          login: { url: '/login', method: 'post' },
          logout: { url: '/logout', method: 'post' },
          user: { url: '/user', method: 'get' }
        },
        user: {
          autoFetch: true
        }
      }
    },

我的登录功能。如果我理解正确,则在登录后,laravel/sanctum 提供程序应该获取用户数据:

async login() {
            try {
                let response = await this.$auth.loginWith('laravelSanctum', { data: this.form })
                console.log('response -> ', response)
                this.$router.push('/')
            } catch (error) {
                console.log('Error Response login -> ', error.response)
            }
        },

我的注销功能,只是为了完成(它不应该与问题有任何关系):

async logout() {
            try {
                let response = await this.$auth.logout()
                console.log('responselogout -> ', response)
                this.$router.push('/login')
            } catch (error) {
                console.log('Error Response -> ', error.response)
            }
    },

出于绝望,我什至创建了一个函数来尝试手动获取用户😅:

async fetch() {
            try {
                let responseuser = await this.$auth.fetchUser()
                console.log('responseuser -> ', responseuser)
                let loggedin = await this.$auth.loggedIn
                console.log('loggedin -> ', loggedin)
            } catch (erroruser) {
                console.log('Error Response user -> ', erroruser.response)
            }
    },

登录时,一切正常,但没有向用户端点发出请求:

Login request

当我尝试手动获取它时,也没有请求:

Undefined response

然后注销时,一切正常:

Logout request

如果它向/user 端点发出请求(登录后自动,或使用提取功能时手动)并且 API 拒绝了它,或者如果答案为空......我将有一些工作要做(我也控制着 API),但没有请求我只是不知道从哪里开始调试问题。

任何提示都会有用。提前致谢!

最佳答案

只是路过说我终于可以解决问题了!耶! 🥳

没有向/user 发出请求,因为没有 XSRF-TOKEN cookie。而且出于浏览器安全的考虑,没有 XSRF-TOKEN。

长话短说,这个解决方案对我有用 -> https://github.com/nuxt-community/auth-module/issues/1164#issuecomment-839199946

我希望这对有同样情况的人有帮助:)

关于Laravel/Sanctum 用户获取问题,使用 auth-next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71644264/

相关文章:

laravel-7 - 授权后的 Laravel Sanctuary token

php - 计算总条目数并在 Laravel 中制作一个数字列表

php - Lumen - 更改默认存储路径

javascript - 观察vue中的div宽度变化

vue.js - 具有 Netlify 表单的 Vue 应用程序抛出绑定(bind)到事件的错误

Laravel 8 Sanctum SPA Auth - 未按要求设置 session 存储

php - Laravel 胶囊 : Catch PDOException

php - 将 "status"数据插入AuthController中的数据库

vue.js - [Vue warn] : Invalid prop: custom validator check failed for prop "value" 是什么原因

reactjs - Laravel 7 Sanctum : Same domain (*. herokuapp.com)但单独的 React SPA 获取 CSRF token 不匹配