AWS Amplify,如何检查用户是不是登录?
Posted
技术标签:
【中文标题】AWS Amplify,如何检查用户是不是登录?【英文标题】:AWS Amplify, how to check if user is logged in?AWS Amplify,如何检查用户是否登录? 【发布时间】:2018-07-21 19:51:48 【问题描述】:我一直在使用带有 ionic 的 aws-amplify
库,想知道如何检查用户是否已登录?我来自火力背景,所以这是完全不同的。这样我就可以根据用户的登录状态授予对某些页面的访问权限。在我的auth
提供程序中,我导入Amplify Auth
。我可以看到可以获得几条数据,但我不确定该使用什么。有currentUserPoolUser
、getCurrentUser()
、getSyncedUser()
、currentAuthenticatedUser
、currentSession
、getCurrentUser()
、userSession
、currentUserCredentials
、currentCredentials
和currentUserInfo
。我似乎也找不到任何关于这方面的任何文件。在用户登录之前,我阅读和观看的所有内容都被掩盖了……这一切都应该在客户端上完成吗?谢谢。
【问题讨论】:
【参考方案1】:我在每个页面中都使用 ionViewCanEnter() 函数来允许/拒绝访问。这个函数的返回值决定了页面是否可以被加载(并且它在运行costructor之前被执行)。在这个函数中你必须实现你的逻辑。
就我而言,使用 Amplify,我正在这样做:
async function ionViewCanEnter()
try
await Auth.currentAuthenticatedUser();
return true;
catch
return false;
由于放大 currentAuthenticatedUser() 返回一个承诺,我使用 async await 等待响应以了解用户是否登录。
【讨论】:
为什么要混合新旧语法?async ionViewCanEnter() try await Auth.currentAuthenticatedUser() return true catch(e) return false
呢?【参考方案2】:
这可以使用 Auth 的 fetchAuthSession() 方法来实现。
final CognitoAuthSession res = await Amplify.Auth.fetchAuthSession();
if (res.isSignedIn)
// do your thang
【讨论】:
【参考方案3】:如果您将 Angular 与 ionic 一起使用,那么您可以在身份验证器服务中执行类似的操作
import AmplifyService from 'aws-amplify-angular';
.
.
constructor(private amplifyService:AmplifyService)
this.amplifyService.authStateChange$.subscribe(auth =>
switch (auth.state)
case 'signedIn':
this.signedIn=true;
case 'signedOut':
this.signedIn=false;
break;
default:
this.signedIn=false;
然后您可以在路由器中使用this.signedIn
和canActiavate
保护。
角度路由器保护:https://angular.io/guide/router#preventing-unauthorized-access
【讨论】:
【参考方案4】:嘿,我认为现在你只能使用Auth.currentUserInfo();
来检测是否登录。如果您未登录,它将返回 undefined
,如果您已登录,则返回 object
。
【讨论】:
或者这个Auth.currentAuthenticatedUser()
非常感谢。另外,在客户端做这一切可以吗?类似于如何构建完整的客户端应用程序并将 firebase 用作 BaaS?以上是关于AWS Amplify,如何检查用户是不是登录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Amplify for Flutter 中检查用户是不是已确认(电子邮件/电话验证)
如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?
如何使用 aws amplify 保持用户登录 react-native
Swift - AWS Cognito 使用 Amplify - 如何在 swift 登录后获取令牌?
aws-amplify auth currentSession 不返回当前用户
AWS Amplify 登录错误 - 登录错误... [TypeError: (0, _getRandomBase.default) 不是函数