我第一次用Android应用程序实现AWS。
我们希望使用认知验证我们的用户,并有选择地提供来自DynamoDB的数据。
我已经成功地设置了我的用户池,并可以看到新的注册出现在用户列表中。尝试使用不存在的电子邮件登录失败。
然而,科尼图总是登录一个有效的电子邮件地址,,而不管密码输入。
我的过程怎么了?
public class CognitoController extends Application {
static CognitoUserPool pool;
static String userEmail;
public void onCreate(){
super.onCreate();
pool = new CognitoUserPool(this,
"us-east-xxxx",
"xxxx",
"xxxx",
new ClientConfiguration(),
Regions.US_EAST_1);
}
}-
private void actionAdminLogin(){
UtilityInterfaceTools.hideSoftKeyboard(AdminLoginActivity.this);
String inputEmail = ((EditText) findViewById(R.id.input_admin_email)).getText().toString();
String inputPassword = ((EditText) findViewById(R.id.input_admin_password)).getText().toString();
CognitoController.userEmail = inputEmail;
details = new AuthenticationDetails(inputEmail, inputPassword, null);
AuthenticationHandler auther = new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
Toast.makeText(AdminLoginActivity.this, "Congratulations It Works...", Toast.LENGTH_LONG).show();
startActivity(new Intent(AdminLoginActivity.this, AdminPortalActivity.class));
finish();
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation continuation, String email) {
continuation.setAuthenticationDetails(details);
continuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
continuation.continueTask();
}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {
continuation.continueTask();
}
@Override
public void onFailure(Exception exception) {
TextView errorMessage = findViewById(R.id.message_invalid_credentials);
errorMessage.setText(exception.toString());
errorMessage.setVisibility(View.VISIBLE);
}
};
CognitoController.pool.getUser(inputEmail).getSessionInBackground(auther);
}发布于 2018-10-15 07:47:02
我认为你的问题(顺便说一句不是问题)是:
记起 设备也会被跟踪。在用户身份验证期间,分配给已记住的设备的密钥和秘密对用于对设备进行身份验证,以验证它是否是用户以前用于登录到应用程序的同一设备。已经在安卓、iOS和JavaScript SDK的新版本中添加了用于查看记忆设备的API。你也可以在亚马逊的认知控制台上看到记忆中的设备。
缓存 Mobile在SharedPreferences中本地缓存最后一个成功通过身份验证的用户和用户的令牌。SDK还提供了获取最后一个成功通过身份验证的用户的方法。
您的应用程序更新
事实上,为了获得更好的用户体验,您希望用户使用该应用程序,并且不需要每次她想使用您的应用程序时都登录(例如,查看邮件应用程序、社交媒体应用程序等)。但是,您的应用程序需要处理这个问题,您在这里有两个选择:
https://stackoverflow.com/questions/52806460
复制相似问题