如何使用AngularJs SDK为LoopBack中的密码重置设置Access-Token

时间:2016-08-17 11:17:27

标签: angularjs loopback

我的项目基于

  

Loopback入门教程2

我在客户端使用AngularJs SDK,我想实现“密码重置”功能。

首先是CREATE TABLE Hobbies ( Name VARCHAR(35) NOT NULL, Hobby1 VARCHAR(35) NOT NULL, Hobby2 VARCHAR(35) NOT NULL, Hobby3 VARCHAR(35), Hobby4 VARCHAR(35), CHECK ( Hobby1 < Hobby2 ), CHECK ( Hobby2 < Hobby3 ), CHECK ( Hobby3 < Hobby4 ), UNIQUE ( Name, Hobby1, Hobby2 ), ); 视图,您可以在其中输入您的电子邮件地址并要求输入其他密码。

然后,每封电子邮件都会发送一个链接,指示您INSERT INTO Hobbies VALUES ( 'John Doe', 'fishing', 'jogging', 'reading', 'swimming' ); INSERT INTO Hobbies VALUES ( 'John Doe', 'jogging', 'reading', 'swimming', NULL );

在此视图中,用户输入密码并提交。之后它应该通过ID找到用户并更新其密码。

但对于/reset-password/set-new-password/{{accessToken}}/{{userId}},我需要Request-Header中的访问令牌。 “通常”请求标头在登录后始终包含访问令牌。但由于它是密码重置,我没有登录。

我可以通过User.findById访问访问令牌,但是如何在Request-Header中设置它,所以我仍然可以使用AngularJs-SDK?

(我希望一切都很清楚。英语不是我的母语)

2 个答案:

答案 0 :(得分:0)

修改:我找到的人几乎有同样的问题here。不接受的答案现在适用于我。

EditEdit:始终无法正常工作..有时它不会更改标题中的&#34;授权&#34; - 参数。无法弄清楚原因

答案 1 :(得分:0)

LoopBack AngularJs SDK解决方案

在您的angularJs控制器中

    getusers({
  commit
}) {
  const sessionToken = localStorage.getItem('sessionToken')
  axios.get('/newuser', {
      headers: {
        Authorization: `Bearer ${localStorage.getItem('sessionToken')}`
      },
    })
    .then(response => {
      console.log('success');
    })
    .catch(error => {
      alert(error)
    })

  const socket = openSocket('http://localhost:3000')
  socket.on('newuser', data => {
      if (data.serverResponse === 'created') {
        this.users = data.user
        commit('GET_USERS', users)
      })
  })

您需要实施错误控制,并且最好在发送前两次检查密码。