我有一个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/