Как настроить его так, чтобы приведенный ниже метод входа в систему принимал входные данные из 2 полей JTextfield? - PullRequest
0 голосов
/ 23 мая 2011

Проблема в том, что это приложение для входа в систему JAAS.Приведенный ниже метод использует Java-класс Callback, и он меня как бы смущает.Поскольку он связан с классом Callback (помимо прочего), стандарт

       JTextfield username = Class.getText(); 

не работает.Ваши мысли приветствуются:

     public boolean login() throws LoginException {

   // prompt for a user name and password
   if (callbackHandler == null)
       throw new LoginException("Error: no CallbackHandler available " +
        "to garner authentication information from the user");

   Callback[] callbacks = new Callback[2];
   callbacks[0] = new NameCallback("user name: ");
   callbacks[1] = new PasswordCallback("password: ", false);

   try {
       callbackHandler.handle(callbacks);
       username = ((NameCallback)callbacks[0]).getName();            


       char[] tmpPassword = ((PasswordCallback)callbacks[1]).getPassword();            


       if (tmpPassword == null) {
       // treat a NULL password as an empty password
       tmpPassword = new char[0];
       }
       password = new char[tmpPassword.length];
       System.arraycopy(tmpPassword, 0,
        password, 0, tmpPassword.length);
       ((PasswordCallback)callbacks[1]).clearPassword();

   } catch (java.io.IOException ioe) {
    throw new LoginException(ioe.toString());
   } catch (UnsupportedCallbackException uce) {
    throw new LoginException("Error: " + uce.getCallback().toString() +
    " not available to garner authentication information " +
    "from the user");
   }

       . . . 

1 Ответ

0 голосов
/ 23 мая 2011

Благодаря Hovercraft Full Of Eels, направившему меня в правильном направлении, я смог в этом разобраться.Ниже приведен правильный код в моем обработчике обратного вызова (не мой модуль входа в систему, как я изначально, хотя выше):

 public void handle(Callback[] callbacks)throws IOException, UnsupportedCallbackException 
 {
     for (int i = 0; i < callbacks.length; i++) 
     {
         if 
         {
             . . . .
         }
         else if (callbacks[i] instanceof NameCallback) 
         {

    // prompt the user for a username
    NameCallback nc = (NameCallback)callbacks[i];  
    System.err.print(nc.getPrompt());
    System.err.flush();
    nc.setName(Video_Game_Store.usrName.getText());

     } 
         else if (callbacks[i] instanceof PasswordCallback) 
         {

    // prompt the user for sensitive information
    PasswordCallback pc = (PasswordCallback)callbacks[i];
    System.err.print(pc.getPrompt());
    System.err.flush();         
            pc.setPassword(Video_Game_Store.psWord.getText().toCharArray());

     } 
         else 
         {
    throw new UnsupportedCallbackException
        (callbacks[i], "Unrecognized Callback");
     }
 }
 }
...