从内部存储中检索

时间:2016-06-22 20:16:10

标签: codenameone

我们尝试从内部存储中检索。我们想要在注册后例如“Oscar”然后登录后它应该显示我在主窗体上以“Oscar”身份登录。在主窗体上,它应该声明我已登录为“已登录的任何用户名”。

这是我到目前为止所做的:

String username = txtUsername.getText();     String password = txtPassword.getText();

Storage.getInstance().writeObject("Username", username);
Storage.getInstance().writeObject("Password", password);

Dialog.show("", "You Have Successfully Registered", "Okay Cool", null);
return false;

}

protected boolean onLoginLogin(){

TextField txtUsername = findTxtUsername();
TextField txtPassword = findTxtPassword();

String username = txtUsername.getText();
String password = txtPassword.getText();

String StorageUsername = (String) Storage.getInstance().readObject("Username");
String StroragePassword = (String) Storage.getInstance().readObject("Password");

if (username != null && username.equals(StorageUsername) && password != null && password.equals(StroragePassword)) {
    Dialog.show("Message", username + "\n" + "Logged In", "Okay", null);
    return false;
} else {
    Dialog.show("Error", "Incorrect Details", "Okay", null);
}
return true;

} }

1 个答案:

答案 0 :(得分:-1)

我举一个例子:

您有基本的写入和读取方法:

public boolean putData(String name, Object o) {
    return Storage.getInstance().writeObject(name, o);
}

public Object getData(String name) {
    return Storage.getInstance().readObject(name);
}

然后您将正常保存信息:

Map<String, String> userDetails = new HashMap<String, String>();
userDetails.put(UserStatic.PASSWORD, password);
userDetails.put(UserStatic.USERNAME, username);
MyStorageEnum.INSTANCE.putData(MyStorageStatic.USER, userDetails);

如果您要存储密码,我建议以某种方式加密密码。

当用户登录时,您只需将从文本字段中检索到的信息与存储的信息进行比较。

获取存储的数据:

Map<String, String> userStore = (Map<String, String>) MyStorageEnum.INSTANCE.getData(MyStorageStatic.USER);

然后我将它映射到一个基本的bean对象:

public class User {
private String username;
private String password;
...

如果要进行验证,可以随时查看存储的值是否存在:

public boolean exists(String name) {
    return Storage.getInstance().exists(name);
}

然后做一个基本的if陈述:

if (user.getPassword().equals(password)
            && user.getUsername().equals(username)) {
    //doLogin
}

登录过程的一部分是将用户的用户名存储到会话中,例如:

public enum Session {
INSTANCE;
private String username;
...

然后,您可以使用此会话枚举,以便在您希望使用它时获取用户名,例如:

Session.INSTANCE.getUsername();