当前位置: 首页 > 知识库问答 >
问题:

Nuxt Auth模块-如何通过id/username获取用户

万修然
2023-03-14

我正在尝试将“Nuxt身份验证模块”集成到我的Nuxt应用程序中。

https://auth.nuxtjs.org/

我已经配置了我的代理

https://auth.nuxtjs.org/schemes/local.html

我的'Login'endpoint工作正常,我将'propertyName'设置为'access_token',因为这是我的令牌值所在的位置。我看到“Vuex”将我的“LoggedIn”状态更新为true,我还可以在Chrome的“网络”选项卡中看到令牌响应。

然而,我真的很难理解“用户”endpoint是如何工作的。

举例如下:

auth: {
  strategies: {
    local: {
      endpoints: {
        login: { url: '/api/auth/login', method: 'post', propertyName: 'token' },
        logout: { url: '/api/auth/logout', method: 'post' },
        user: { url: '/api/auth/user', method: 'get', propertyName: 'user' }
      },
      tokenRequired: true,
      tokenType: 'bearer'
    }
  }
}

上面的内容和我的差不多,“用户”endpoint如何知道哪个用户登录?

我正在使用第三方系统进行身份验证,因为我正在将应用程序集成到第三方系统中。REST的用户终结点需要ID或UserName来返回特定用户的详细信息。

我的'Login'响应包含'UserName',我可以使用它调用后续的用户endpoint(如果我知道怎么做的话)。

有人知道用户endpoint是如何工作的吗?本质上,我需要这样称呼:

          user: {
            url: '/users/${userId}',
            method: 'get',
            propertyName: 'data'
          }

共有1个答案

葛昱
2023-03-14

也面临这个问题。

我的解决方案:

  1. 将身份验证endpoint的用户属性设置为false
auth: { 
    strategies: {
      local: {
        endpoints: {
          // login api
          login: {  
            url: '/api/v1/users/login',
            method: 'post',
            propertyName: 'token'
          },
          // logout api
          logout: {
            url: '/api/v1/users/logout',
            method: 'post'
          },
          user: false // setting user fetch api to false
        },
        redirect: {
          login: '/login',
          logout: '/login',
          callback: '/login',
          home: '/'
        },
      }
    }
  },

  async login(user) {
    await this.$auth.loginWith('local', {
      data: user
    }).then(res => {

      let user = res.data.data.user // getting user (yours can be different)
      this.$auth.$storage.setUniversal('user', user, true) // setting user in Vuex, cookies and localstorage

      user = this.$auth.$storage.getUniversal('user') // getting user (you can use it anywhere in your app)
      console.log(user) // checking user

      this.$router.push('/') // redirecting after login
    }).catch(err => {
      console.log(err.response)
    })
  }
computed: {
  user() {
    return this.$auth.$storage.getUniversal('user');
  }
}

提示:要注销,请使用logout()函数,并在回调中使用this$auth$存储removeUniversal(“用户”)将其从任何地方删除

 类似资料:
  • 问题内容: 我正在尝试通过angularjs在html中查找元素。 这是html: 我试图通过类名多文件来获取按钮元素,然后我尝试 但是它不起作用,并且尝试过,但仅对标签起作用。 在angularjs中,有没有可以通过ID或类名获取元素的函数? 问题答案: 是DOM文档上的函数。它既不是jQuery也不是jqLit​​e函数。 使用时不要在类名前添加句号: 将其包装在jqLit​​e中(如果在An

  • 我正在尝试从特定目录中的google工作表列表(大约570个工作表)中删除多余的行和列(已知范围)。 我能够使用google drive API获取电子表格Id。但是,修改页面的尺寸需要图纸Id。 我无法找到通过驱动器API(文件属性)检索此工作表ID的方法,也无法找到任何关于如何在电子表格中列出可用工作表的留档,因为我有电子表格ID。 我尝试使用谷歌应用程序脚本来达到我的目标,但运行时间已经超过

  • 完全修改,请重新阅读 你好,我使用的主题显示页面的标题,而不是面包屑中的菜单标签。我试图让面包屑显示相关的菜单标签,如果它是可用的,如果不是,则默认为page_title。 我想出了一些我认为接近的代码。第4行///$ menu _ items = WP _ get _ nav _ menu _ items($ slug);返回null,它应该返回包含当前文章的$slug的导航项。显然,有些事情我

  • 我得到了这段代码,但我认为这是不好的方法,如果有像100K的结果,它会返回100K的新用户怎么办?对于,我是否可以使用其他方法,但我不太确定如何实现。另外,是否应该使用块?

  • 问题内容: 我知道我可以按元素获取范围: 我该如何反向:使用scope来查找DOM元素,例如? 我想这样做是为了调试。我的作用域树显示了一些内容,我想确定它的来源。 问题答案: 尽管不是很性感,但每个dom节点都有一个ng-scope类,因此您可以通过技术进行如下操作:

  • 问题内容: 我想取一个并将其附加到资源ID中,以便能够获得与游戏中该编号卡座相对应的图像。使用其他设备上的路径很容易,但是使用资源ID时,我不确定该怎么做。 这是我现在所拥有的: 在我的Blackberry版本中,我简单地拥有: 有没有办法在Android上使用资源ID来完成类似的工作? 问题答案: 使用您的(例如),但请缓存的结果,如果你会不止一次地使用它。在上实现。 例如: 将返回的值,其中是