我有一个Vue.js网络应用程序,我正在尝试向使用AWS Cognito和Amplify Auth的方式添加简单例份验证。我为用户池设置了为OAuth流启用的“授权代码授予”功能。我还将重定向URL设置为托管UI的https://example.auth.us-east-2.amazoncognito.com/login?response_type=code&client_id=XXXXXXXX&redirect_uri=https://example.com/auth/verify

这是托管UI重定向到的页面内的内容:

import { Auth } from "aws-amplify";

export default {
    async created() {
        try {
            await Auth.currentSession();
        } catch {
            console.error("Not authorized");
        }
    }
}

当我第一次通过托管用户界面登录并被重定向时,出现错误,并且未被Amplify识别为已通过身份验证。但是,如果我第二次登录,则控制台中没有错误,并且我具有经过身份验证的 session 。

我确实知道授权代码授予不会将 token 放在URL中,但是即使在首次登录时,我也确实在本地存储中看到了 token 。我试图切换为使用“ token ” OAuth流,但是Amplify文档说刷新了没有以这种方式提供 token ,我不想将 session 限制为1小时。这里有什么指导吗?

最佳答案

对于任何面临相同问题的人,这似乎是一个已知问题。

解决方法是订阅集线器操作并在其中进行处理

Hub.listen("auth", ({ payload: { event, data } }) => {
  switch (event) {
  case "signIn":
    // signin actions
    Auth.currentSession()
      .then(user => console.log(user)) // redirect to default page
      .error(err => console.log(err))
  case "signOut":
    // signout actions, redirect to '/' etc
  case "customOAuthState":
    // other changes
  }
}

引用https://github.com/aws-amplify/amplify-js/issues/5133#issuecomment-600759135

关于amazon-web-services - AWS Cognito托管的UI和具有授权码OAuth流程的Amplify Auth,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60444242/

10-11 07:13