【问题标题】:Retrieving from the internal storage从内部存储中检索
【发布时间】:2016-07-06 21:26:23
【问题描述】:

我们试图从内部存储中检索。我们希望在注册为“Oscar”之后登录,然后在主窗体上显示我以“Oscar”的身份登录。在主表单上,它应该说明已登录为“任何已登录的用户名”。

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

字符串用户名 = txtUsername.getText(); 字符串密码 = txtPassword.getText();

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

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

}

受保护的布尔 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;

} }

【问题讨论】:

  • 您没有包含显示登录结果的部分。我建议使用调试器并放置断点来查看发生了什么。我还建议为此使用Preferences API,因为它在存储简单值方面要好得多

标签: codenameone


【解决方案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 枚举,以便在您希望使用它时获取用户名,例如:

Session.INSTANCE.getUsername();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2017-11-20
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多