我正在构建web应用程序(使用ReactJS),它使用Cognito用户池进行用户管理,这将是无服务器的。我寻找关于如何在浏览器中使用Javascript实际登录时获得Cognito IDToken的帮助。我只需要令牌,并将其传递给API,该API将从令牌中提取身份验证信息,并将其用于某些特定目的。
发布于 2018-04-02 16:50:43
Amazon Cognito令牌存储在浏览器的本地存储中,但不建议直接从那里访问它们,因为它们可能会过期。
最好使用SDK获取令牌,您可以从SDK获取会话,它会为您刷新令牌(如果令牌过期),并在会话仍然有效的情况下为您提供有效的令牌。例如:
import * as AmazonCognitoIdentity from "amazon-cognito-identity-js";
const poolData = {UserPoolId: "USER_POOL_ID", ClientId: "CLIENT_ID"};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
// React
const cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession((err, session) => {
if (err) {
console.log(err);
} else if (!session.isValid()) {
console.log("Invalid session.");
} else {
console.log("IdToken: " + session.getIdToken().getJwtToken());
}
});
} else {
console.log("User not found.");
}
// React Native
userPool.storage.sync((error, result) => {
if (error) {
console.log(error);
} else if (result === "SUCCESS") {
const cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession((err, session) => {
if (err) {
console.log(err);
} else if (!session.isValid()) {
console.log("Invalid session.");
} else {
console.log("IdToken: " + session.getIdToken().getJwtToken());
}
});
} else {
console.log("User not found.");
}
} else {
console.log("Storage sync error.");
}
});https://stackoverflow.com/questions/49606668
复制相似问题