注销后 Nuxt 身份验证不重定向

问题描述

我刚刚开始在我当前的项目中使用 Nuxt。我使用 DRF 作为后端,并且带有 nuxt-auth 的 local auth 策略非常有效。但是,当我退出时,我必须刷新页面才能进入登录页面

这是我的index.vue

<template>
    <div>
        <Navbar />
        <Profile  />
        <PostForm />
        <Records />
        <Footer />
        <button @click="$auth.logout()"> logout </button>
    </div>
</template>

<script>
import Records from '../components/Records.vue';
import Profile from '../components/Profile.vue';
import PostForm from '../components/PostForm.vue';

export default {
    middleware: ['auth',],// or,'auth' as a string
    
    components: {
        Records,Profile,PostForm
    }
}
</script>

这是我的身份验证设置:

auth: {
    strategies: {
      local: {
        endpoints: {
          login: {
            url: 'rest-auth/login/',method: 'post',propertyName: 'key',},logout: { url: 'rest-auth/logout/',method: 'post' },user: {
            propertyName: 0,url: '/profile-model',method: 'get',tokenType: 'Token',tokenName: 'Authorization',redirect: {
        login: '/login',logout: '/login',home: '/',}

我已经多次通过 documentation,但仍然不明白为什么当我点击登录 {{1} 上的注销按钮时我没有被重定向login/ }}。当然,我可以写一些中间件,但我认为库认提供了该选项。

解决方法

自从发布问题以来,我一直在使用这个解决方案:

export default {
    methods:  {
        async logout () { 
            await this.$auth.logout() 
            this.$router.push('login');
        }
    }
}

然后我会在模板中使用 <button @click="logout()"> Logout </button>。这成功地让我退出并直接进入登录页面。 (就我个人而言,我认为这太hacky,我认为有更好的解决方案。)

更新和正确的解决方案@Iman_Shafiei 正确地指出了这个问题:“您将 redirect 属性放在 strategies 中。”

因此,正确的配置是:

auth: {
    strategies: {
      local: {
        endpoints: {
          login: {
            url: 'rest-auth/login/',method: 'post',propertyName: 'key',},logout: { url: 'rest-auth/logout/',method: 'post' },user: {
            propertyName: 0,url: '/profile-model',method: 'get',tokenType: 'Token',tokenName: 'Authorization',redirect: {
        login: '/login',logout: '/login',home: '/',

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...