首页 > 解决方案 > STRAPI:在 Strapi 中使用 auth0 进行 API 身份验证有效且无效

问题描述

节点:v12.16.1 Strapi:3.0.0-beta.20.1

我是strapi的新手,一开始不得不说:我喜欢它!

我想将StrapiAngular 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中的一个问题。

标签: auth0strapi

解决方案


您必须更新 url: 'https://my.eu.auth0.com/userinfo' 将 my.eu 替换为您在 auth0 上的实际子域。


推荐阅读