gpt4 book ai didi

javascript - 我使用 auth0 进行用户身份验证,并且有一个用于 CRUD 帖子的 API(标题、img、desc)。如何对 CRUD api 进行经过身份验证的调用?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:28 30 4
gpt4 key购买 nike

我正在构建一个 React 应用程序,并使用 auth0 来登录/验证用户。

在使用 auth0 之前,我一直在对 API 进行 CRUD 调用来发布帖子。这又是在使用 auth0 之前、在我拥有用户之前,所以我只是随意发帖。

现在我正在使用 auth0,我已经对其进行了设置,以便它将我创建的用户插入到我的 mongodb 中的 Users 集合中。因此,每个用户现在都有一个 id,我将用它来关联到帖子。

登录后,auth0发送一个 token (我将其存储在本地存储中),如下所示:eyJ0eXAiOiJKV1QiLCJhbGviOdJIUzI1NiJ9.eyJpc3MiOiJodHRwczovLzI4MTMzMC5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NTc4M2VjM jlkYmIxMAEwMTAwNTE1M2VmIiwiYXVkIeoiTzE3MGJkNnlnc3lCODkyY295Y25haVhyVkpQZHBUUlgiLCJleHAiOjE0Njw0NjkyMDQsImlhdCI6MTQ4ODDzMzIwNH0.gte9fxVURQGzOWD1ZF8AB-JachZ uIkYmux6WKOZ-fdk

这是我的问题 - 如何对我的 CRUD api 进行经过身份验证的调用?也就是说,只有登录用户才能进行API调用。我没有成功地找到有关该主题的教程。

最佳答案

您需要做的是将身份验证 token 设置为来自客户端的每个请求中的 header 。由于您说 auth0 正在为登录用户发送 token ,因此您可以简单地将这个 token (可能为了安全性而进行哈希处理等,但这个问题与安全性无关)存储在您的数据库中,在您的用户对象中。 p>

在 header 中设置 token 后,您可以在 Express 的 request 对象中获取它,并在数据库中搜索它。如果它有效,则您已成功验证该请求(并知道哪个用户发出了该请求)。如果请求 header 中没有有效的身份验证 token ,您可以发回 403 错误。

最简单的方法可能是在中间件中,您可以简单地为所有跟踪请求设置一个值,无论它们是否经过身份验证。

例如,在 express 中:

function checkAuth(req, res, next) {
//grab your auth token
var authToken = req.get('X-Authentication-Token'); //or whatever you've set the name of your auth header to be in the client

//decrypt it it you have to, etc.

//pseudo code. You'd have, for example, a function that would
//search for the auth token in your database, and return the user
//object if it exists, and throw an error if it didn't.
validateTokenFromDB(authToken).then(function(user) {
//you can set some values on your request here, so that they're
//available later to your handlers.
req.user = user;
req.authToken = authToken;
next();
}).catch(function(err) {
//return your 403.
return invalidRequest(req, res);
});
}

function invalidRequest(req, res) {
res.status(403);
res.end('{"error":"unauthorized"}');
}

您现在可以将此中间件应用于您想要保护的任何路由。

同样,在我的示例中,当然我不会处理 token 散列,也不会使用纯文本、TLS 等来发送和发送 token 。只是说明使用身份验证 token 的一般架构。

希望这有帮助!

关于javascript - 我使用 auth0 进行用户身份验证,并且有一个用于 CRUD 帖子的 API(标题、img、desc)。如何对 CRUD api 进行经过身份验证的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359837/

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