auth0 - STRAPI:在 Strapi 中使用 auth0 进行 API 身份验证有效且无效
问题描述
节点:v12.16.1 Strapi:3.0.0-beta.20.1
我是strapi的新手,一开始不得不说:我喜欢它!
我想将Strapi与Angular 9一起使用,并且我想使用Auth0进行身份验证。
对于我使用 Auth0 的设置,我遵循了 Strapi 文档中的指南,并在用户权限插件中自定义了我的 permissons.js。出色地!
我有一个非常令人困惑的问题。
当我从 Auth0取回我的access_token 时,我将它作为承载身份验证令牌放入我的调用中,对 strapi 端点的请求主要是第一次工作,有时可能是第二次和更多的调用,然后它失败了。如果我等待几秒钟然后它会再次工作,并且在成功调用后它也会再次失败。(也使用邮递员在我的角度应用程序之外进行测试 - 相同的行为)如果我使用strapi jwt,它可以永久工作,独立于我的请求频率。
这几天让我很困惑。
如果 strapi 失败,我的响应是 Invalid token: Token does not match with Strapi and Auth0 as catched in the error part.
如果它永远不会起作用,我不得不说我做错了什么,但它有时会起作用,所以我会说我的方法在技术上是正确的。但我当然会做错事。
通过Auth0和strapi进行身份验证并理解我试图解释的内容,其他人是否遇到过类似的问题?
这是我的代码片段(我会说完全是从文档中复制的,有点个性化):
...
try {
const data = await axios({
method: 'post',
url: 'https://my.eu.auth0.com/userinfo',
headers: {
Authorization: ctx.request.header.authorization
}
});
console.debug('data from Auth0: ' + JSON.stringify(data.data));
// if you want do more validation test
// feel free to add your code here.
return await next();
} catch (error) {
return handleErrors(ctx, new Error('Invalid token: Token did not match with Strapi and Auth0'), 'unauthorized');
}
...
我希望有人有类似的问题,并且知道如何解决这个问题。也许这是Auth0中的一个问题。
解决方案
您必须更新 url: 'https://my.eu.auth0.com/userinfo' 将 my.eu 替换为您在 auth0 上的实际子域。
推荐阅读
- emulation - Difference between RL n and RLA CPU instructions
- powershell - 如何在变量中获取 vm 的 IP 地址和名称
- sql-server - '=' 附近的语法不正确。得到错误
- google-apps-script - 从 Google 电子表格生成文本文件并将其链接返回到电子表格中的单元格
- angular - Failed build on Travis, version incompatibilities
- react-native - marginBottom 和 marginTop 与百分比切割子
- android - How do i generate refresh and access token for Google Play Developers API
- .net - One `Using` statement per script?
- google-chrome - 所有developers.google.com 页面都以移动模式显示在我的计算机上
- angular - AngularCli 将节点模块导入到 Angular app.module loadChildren