gpt4 book ai didi

amazon-web-services - 如何管理认知 token 生命周期

转载 作者:行者123 更新时间:2023-12-04 13:00:15 25 4
gpt4 key购买 nike

我有一个将使用 cognito 作为身份验证提供程序的应用程序。我注意到 id and access token两个小时后过期。这似乎不是很长时间。

我已经想到了两种管理 token 的方法,但不确定选择哪种方法/最佳实践。

在向我的后端发出每个请求之前,我可以检查 token 的到期时间,如果有效,则使用它,如果无效,我可以使用刷新 token 获取新 token 并使用它。

或者

我可以在每个请求中刷新 token 并为请求使用新的 id/访问 token 。

大多数人如何管理这些短暂的代币?

最佳答案

使用 cognito,您将获得 3 种 token ,所有 token 都存储在您的存储中。
1)访问 token 。 (有效期1小时)
2)ID - token 。 (有效期1小时)
3)刷新 token 。 (有效期为1个月或2个月,请核实)

//对于 Web 应用程序

我已将 AWS-Amplify 用于我的 Web 客户端。

在你的登陆页面你应该调用 Auth.currentSeesion();

如果访问 token 和 id token 的生命周期(1 小时)获得 exipers,则调用此方法时,它将查找刷新 token ,然后 aws 放大将带回访问 token 和 id token 并存储到存储中。

链接:https://aws-amplify.github.io/docs/js/authentication#token-refresh

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.4.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.1/umd/react-dom.production.min.js"></script>

useEffect(() => {
analytics.initialize();
// Update Authorization token
auth.currentSession()
.then(data => {
storage.saveDataInLocal(StorageKey.ACCESS_TOKEN, data.idToken.jwtToken);
const { email } = data.idToken.payload;
// checking if user was signed in by gmail
if(props.isGoogleSigned) {
// this code is required to auto login user if he closed the tab last time when he was logined
props.dispatch(sendGoogleSignInRequest(email));
}
props.dispatch(initialCall());
})
.catch(() => {
props.dispatch(initialCall());
});
// Validate user authentication status
auth.currentAuthenticatedUser()
.then(() => {
props.dispatch(fetchAppData());
}
)
.catch(() => {
if (storage.getDataFromLocal(StorageKey.USER_INFO)) {
props.dispatch(clearAppReducer());
storage.clearAllLocalData();
storage.clearAllSessionData();
props.history.push('/login');
}
});
}, []);

关于amazon-web-services - 如何管理认知 token 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921783/

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