mrr*_*ain 3 authentication amazon-web-services amazon-cognito aws-amplify
我已通过 AWS 管理控制台将 AWS Cognito 用户手动添加到我的应用程序的用户池中。已为此用户确认所需的用户池凭据。我正在设置一个身份验证保护来控制对路线的访问。每当我使用 Auth.signIn() 函数时,promise 都会成功解析,但是,在登录后调用 Auth.currentAuthenticatedUser() 时,canActivate() 函数中的 promise 会返回错误消息“未验证”。我已经阅读了 cookieStorage 上的 GitHub 问题,导致了这个问题,但没有配置这个。
登录.component.ts
signIn(username, password) {
return new Promise(() => {
Auth
.signIn(username, password)
.then(() => {
this.router.navigate(['main/dashboard']); // navigates to main/dashboard as expected
})
.catch(err => {
this.authenticationError = err.message;
})
});
}
Run Code Online (Sandbox Code Playgroud)
auth.guard.ts
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return Auth
.currentAuthenticatedUser()
.then(() => {
return true;
})
.catch((err) => {
this.router.navigate(['signin']);
console.log(err) // "not authenticated"
return false;
});
}
Run Code Online (Sandbox Code Playgroud)
通过 AWS 管理控制台创建的用户不被视为已通过身份验证,除非该用户的状态字段为 CONFIRMED。在我的案例中,状态字段是 FORCE_CHANGE_PASSWORD。AWS 希望通过控制台创建的用户在首次登录或使用电子邮件或移动验证验证其帐户后更改其密码。就我的应用而言,我不想使用电子邮件或移动验证。为了解决这个问题,我为该用户使用了以下 aws-cli 命令。
aws cognito-idp admin-set-user-password --user-pool-id your_user_pool_id --username username --password password --permanent
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |