AWS Cognito - React Native -我如何实现这一点:如果用户登录移动设备,它应该自动从其他登录设备



我正在开发一个反应原生移动应用程序。我希望我的用户登录在一个设备与一个帐户。如果用户试图登录到另一个移动设备相同的帐户,他应该注销从第一移动设备。但是AWS cognito的官方文档提供了注销或全局注销两种选项。在全局注销中,它将用户从设备1和设备2中注销。如果用户登录第二台移动设备,它应该自动从另一台移动设备注销。

可以通过AdminUserGlobalSignOutAPI实现。通过调用AdminUserGlobalSignOutAPI,它从所有设备签出。它会撤销所有从AWS cognito发出的刷新令牌。

当客户端尝试登录时,Cognito会触发预认证lambda触发器。当Cognito调用触发器时,Cognito发送一条JSON记录,其中包含有关尝试登录的客户端的信息。具体来说,Cognito为Lambda触发器发送客户端池ID和用户名。调用AdminUserGlobalSignOutAPI需要这两个数据。

您可以在您的预认证lambda触发器

上尝试此代码

var AWS = require('aws-sdk');
var CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({ apiVersion: '2016-04-19', region: process.env.REGION });
var params = {
UserPoolId: 'STRING_VALUE', /* required */
Username: 'STRING_VALUE' /* required */
};
cognitoidentityserviceprovider.adminUserGlobalSignOut(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else     console.log(data);           // successful response
});

当用户登录设备时,您可以在尝试登录特定设备之前将其全局注销。在尝试登录之前,您必须等待admin-user-global-sign-out请求完成,否则您可能会遇到一些错误,但这应该可以工作。AWS没有为允许您退出单个特定设备的设备保留任何服务器端标识符,因此这将是您唯一的选择。换句话说,没有一个开箱即用的解决方案可以让您用Cognito做您想做的事情。如果不希望在每次登录尝试时都全局地将用户签出,则可以在用户登录时向user Pool添加自定义属性,并在登录时检查是否设置了该属性。是,强制注销所有设备。

最新更新