我的项目基于
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?
(我希望一切都很清楚。英语不是我的母语)
答案 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)
})
})
您需要实施错误控制,并且最好在发送前两次检查密码。