gpt4 book ai didi

javascript - Meteor、React、身份验证和授权问题

转载 作者:行者123 更新时间:2023-12-03 03:24:12 27 4
gpt4 key购买 nike

我正在使用 Meteor 和 React 构建一个小型应用程序。我没有使用很棒的 Meteor 帐户库来处理用户身份验证,因为我需要使用外部 API。

基本上,Meteor 的服务器端用作与 API 通信的代理。

我创建了从 Meteor 到 API 的身份验证:

Meteor.methods({
'user.authentication': function (email, password) {
try {
const res = request.postSync(authenticate, {
method: 'POST',
json: true,
body: {
email, password
}
});

if (res.response.statusCode === 200) {
return res.body;
}

throw new Meteor.Error(res.response.statusCode, res.response.body.error.message);
} catch (err) {
throw new Meteor.Error(400, err.message);
}
}
});

这工作正常...登录组件发送和接收成功的数据,我正在尝试使用 Meteor Session 来“保存”用户 session :

登录.js:

onSubmit(e) {
e.preventDefault();

const email = this.refs.email.value.trim();
const password = this.refs.password.value.trim();

Meteor.call('user.authentication', email, password, (error, res) => {
if (error) {
console.error(error.reason);
} else {
Session.set({
user_id: res.response.user_id,
token: res.response.token
});
history.push('/account');
}
});

}

不幸的是,我没有看到正确保存的 session 值,因此我无法创建控件来将经过身份验证或未经身份验证的用户重定向到正确的页面...

我不知道我的方法是否正确......我想知道我做错了什么,以及是否有更好的解决方案来处理它。

例如,我不喜欢在客户端保存 token 和 user_id,我想将其保存在服务器端,就像 Meteor 为他的用户集合所做的那样,并且能够处理我所有的 API 请求,而无需每次都传递 token ...

最佳答案

Unfortunately I don't see the session values correctly saved, so I can not create controls to redirect authenticated or unauthenticated users to the correct pages...

meteor session requires a key-value pair

因此你不妨尝试:

Session.set("userAuth",{
user_id: res.response.user_id,
token: res.response.token
});

Session.set("userId", res.response.user_id);
Session.set("userToken",res.response.token);

For example I don't like to save token and user_id in the client, I would like to save it server side like Meteor do for his user collection and be able handling all my API request without passing token every time...

实际上,Meteor 会在使用浏览器的 localStorage 成功登录客户端后存储用户 token 。 .

使用帐户登录 Meteor 应用并检查您的 localStorage ;-)

关于javascript - Meteor、React、身份验证和授权问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46424497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com