【问题标题】:Can I use Laravel Sanctum Token Authentication with Nuxt/Auth?我可以将 Laravel Sanctum 令牌身份验证与 Nuxt/Auth 一起使用吗?
【发布时间】:2021-09-23 02:21:03
【问题描述】:

我正在尝试使用 Sanctum 与 nuxt/auth 一起获得令牌身份验证,但其中一些功能似乎不起作用。

我有一个通过用户名/电子邮件和密码对用户进行身份验证的端点,在 API 方面没有问题,它返回具有正确范围的个人访问令牌。

但是,在 nuxt/auth 中,setUserTokensetUser 方法都应该能够处理用户登录,以不同的方式授予,但是这两种方法都没有完成它应该做的事情。

this.$auth.loginWith('sanctum', {
    data: this.form
}).then((response) => {
    // this should set the token to storage
    // then fetch the user with the token 
    // but it only sets the token to storage
    this.$auth.setUserToken(response.data)
    .then(() => {
        // so I have to fetch the user myself with VuexORM
        this.user.api().get('/me')
        .then((result) => {
            // my user is set to the model, but not to auth
            this.$auth.setUser(result.response.data) // sets user but won't set loggedIn to true.
        })
    })
}).catch((e) => {
    console.log(e.message)
})

所以在这一切都失败的时候,我错过了什么吗?还是我应该完全跳过nuxt/auth

【问题讨论】:

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


    【解决方案1】:

    它适用于Nuxt/Auth,但使用Nuxt/Auth 文档给出的sanctum 策略使用基于cookie 的身份验证,您可以使用local 策略进行基于token 的身份验证与sanctum。

    您不需要手动setUserTokensetUser,如果您配置正确,Nuxt/Auth 会为您完成。

    您可以像下面这样配置它,根据您的端点进行更改:

      auth: {
        strategies: {
          local: {
            token: {
              property: 'token',
            },
            user: {
              property: false,
            },
            endpoints: {
              login: { url: '/auth/login', method: 'post' },
              logout: { url: '/auth/logout', method: 'post' },
              user: { url: '/auth/user', method: 'get' }
            }
          }
        }
      },
    

    并确保在用户通过['token' => $user->createToken('login')->plainTextToken]登录Laravel后返回token

    【讨论】:

    • 好的,我试试看,为什么用户属性是假的?
    • 你可以根据你返回用户的方式来改变它,我通过return User::find(auth()->id())直接返回用户数据所以它没有属性。如果您像return ['user' => User::find(auth()->id())] 一样发送它,则需要使用property: 'user'
    猜你喜欢
    • 2021-09-06
    • 2021-08-02
    • 2016-03-01
    • 1970-01-01
    • 2017-04-02
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多