как использовать свойства для входа в систему с несколькими учетными записями пользователей на Java - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть это:

propiedades = new Properties();

try {
  entrada = new FileInputStream("config.properties");
  propiedades.load(entrada);
  Set set =propiedades.stringPropertyNames();
  System.out.println(set);      
} catch (IOException ex) {
  ex.printStackTrace();
} finally {
  if (entrada != null) {
    try {
      entrada.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Итак, что в основном в "config.properties", такова:

admin=admin
user=userpass
user1:userpas1

Далее у меня есть этот код:

    public  boolean revisarCredenciales(String userName,String password)
  {
    Enumeration<?> e = propiedades.propertyNames();
    while(e.hasMoreElements())
    {
      for (; e.hasMoreElements();) {
        System.out.println(e.nextElement());
        if (e.nextElement().equals(userName) && propiedades.getProperty(userName).equals(password))
        {
          return true;
        }
      }      
    }
    return false;
  }

В этом блоке я попытался сделать простой, если где, если e.nextElement() equals userName (userName это просто txUserBox.getText()) и propiedades.getProperty(userName).equals(password(txPassword.getPassword()), тогда он возвращает значение, может быть либо false, либоtrue, и метод, в котором он вызывается, получит доступ к программе, если true.

Проблема возникает, когда он всегда возвращает true, и при этом не имеет значения, что я положил на textboxes это войдет в меня ..

1 Ответ

0 голосов
/ 13 декабря 2018

Для быстрого ответа в случае, если у кого-то есть такая ошибка, я исправил это, просто выполнив:

    public  boolean revisarCredenciales(String userName,String password,Set<String> setNombres)
  {
    for (String key:setNombres)
    {
      String pass=propiedades.getProperty(key);
      if( userName.equals(key) && pass.equals(password)){
      return true;
      }
    }
    return false;
  }

В методе проверки учетных данных, потому что он получал setNombres из этого:

   propiedades = new Properties();

try {
  entrada = new FileInputStream("config.properties");
  propiedades.load(entrada);


} catch (IOException ex) {
  ex.printStackTrace();
} finally {
  if (entrada != null) {
    try {
      entrada.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
setNombres=propiedades.stringPropertyNames();

Итак, когда он просматривает учетные данные, он сначала получает имя пользователя из JTextField, пароль и набор строк.Когда вы отправляете поле JPassword, делайте новую строку (txPassword.getPassword ()).Если вы этого не сделаете и отправите только txPassword.getPassword (), он отправит зашифрованный пароль и не сможет соответствовать.

public  boolean revisarCredenciales(String userName,String password,Set<String> setNombres)
      {
for (key:setNombre(Position))
   { 
     pass(the one written on the textbox)= propiedades.getProperty(key);
                                          //Here it obtaions the value in properties, next to key

if( userName.equals(key) && pass.equals(password)){
 //UserName is what is in the textbox  /pass defined on top.equals(What is on the textbox)

      return true;
    //if that happens returns true, this proccess repeats for each line of the config.properties
      }
    }
return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...