Java - JPasswordField

 
Vista:

JPasswordField

Publicado por Rul (3 intervenciones) el 23/12/2006 15:15:34
Necesito recoger en un String lo que escribo en un JPasswordField utilizando el metodo getPassword(). El problema es que el metodo solo puede ser usado con char[] y no con String como puedo solucionar esto?

char[] password=CampoContraseña.getPassword();

quiero pasar password a string con el mismo contenido que he metido en el campo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:JPasswordField

Publicado por Rafa (83 intervenciones) el 23/12/2006 15:56:31
Y que te parece si mejor intentas con el metodo getText() ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Rul (3 intervenciones) el 23/12/2006 18:02:08
el metodo getText esta obsoleto en java lo que me puede provocar errores, esa posibilidad ya la e contemplado y es la que uso mientras soluciono el problema para no estancarme en el proyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Rafa (83 intervenciones) el 23/12/2006 20:57:21
Mira amigo, no es que getText() esté obsoleto sino que ese no es el uso correcto por eso te da una advertencia de que estás usando una Deprecated API lo que quiere decir que no es recomendada para lo que estás haciendo ya que Java maneja las contraseñas como un array de char por seguridad, pero encontre en la pagina de Sun un link en el que te explica el uso de contraseñas demasiado bien, tan bien que hasta trae un programa de ejemplo demasiado claro ahí te dejo el link, espero te sirva
http://java.sun.com/docs/books/tutorial/uiswing/components/passwordfield.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

RE:JPasswordField

Publicado por txus (1 intervención) el 05/05/2007 17:10:22
Leo de un articulo,

Este método utiliza el método getPassword para obtener el contenido del campo. Esto es por lo que getPassword devuelve un array de caracteres. La información de passwords no debería ser almacenada no pasada en strings, porque no son seguras.

En esta dirección tienes un ejemplo de uso:

http://www.programacion.net/java/tutorial/swing/43/

Un saludo, Txus.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:JPasswordField

Publicado por ruben dario  (1 intervención) el 05/05/2010 04:21:26
hola necesito saber como funciona el JPasswordField en java, necesito un ejemplo claro de como usarlo de antemano agradesco cualquier ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPasswordField

Publicado por Marcos Medina (13 intervenciones) el 04/08/2021 19:42:55
getText() si esta obsoleto, es decir, esta deprecated oficialmente. Por lo que no se aconseja mas su uso porque podrias tener problemas en un futuro cuando quieras actualizar tus apps con las nuevas versiones de algun IDE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Elio (1 intervención) el 14/12/2008 21:37:48
Autentificación

Una vez que la ventana está creada podemos crear el código de nuestro botón para autentificar usuarios. La manera más sencilla de conseguir esto (aunque muy poco segura) es utilizar una contraseña estática, que nunca cambia.
Obtener los datos

Primero vamos a obtener los datos. Por seguridad, el JPasswordField no debe devolver directamente un String (los usuarios podrían introducir caracteres de control en el String y burlar la seguridad del programa). Para resolver este problema Java nos devuelve un arreglo de caracteres con todos los caracteres que agregó el usuario para que podamos verificar este tipo de problemas.

También es importante mencionar que como buena practica de programación vamos a crear un método que se encargue de validar al usuario, porque es util dividir el programa en unidades de control (pequeños pedazos de código que hacen algo específico, como por ejemplo, validar al usuario). El método tendrá como nombre authenticate() y regresará un valor true si el usuario es válido o false si no lo es.

Para leer los datos podemos utilizar el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
String user = txtUsername.getText();
 
// Obtener el password
char passArray[] = txtPassword.getPassword();
// Revisar que sean letras y numeros
for (int i = 0; i < passArray.length; i++) {
    char c = passArray[i];
    // Si no es letra o numero entonces no es valido
    if (!Character.isLetterOrDigit(c)) return false;
}
 
// Convertir el password a String
String pass = new String(passArray);

Validando al usuario

Nuestro método por el momento siempre regresa true cuando el usuario le manda cualquier password con puras letras y números, por lo que el siguiente paso es realmente verificar que su nombre de usuario y contraseña sean válidos:

1
2
3
4
5
if (user.equals("Magus") && pass.equals("password")) {
    return true;
} else {
    return false;
}

Todo junto

El método completo quedaría de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public boolean authenticate() {
    String user = txtUsername.getText();
 
    char passArray[] = txtPassword.getPassword();
    for (int i = 0; i < passArray.length; i++) {
        char c = passArray[i];
        if (!Character.isLetterOrDigit(c)) return false;
    }
 
    String pass = new String(passArray);
 
    if (user.equals("Magus") && pass.equals("password")) {
        return true;
    } else {
        return false;
    }
}

Y para poder utilizarlo sólo tenemos que mandar llamar el método en todas las rutinas que requieran validar al usuario:

1
2
3
4
5
6
7
8
9
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
    if (authenticate()) {
        JOptionPane.showMessageDialog(
            this, "Bienvenido");
    } else {
        JOptionPane.showMessageDialog(
            this, "Nombre de usuario o pass no valido");
    }
}

Otras formas de autentificación

Como pudimos ver, la autentificación por password estático es un modelo muy débil, por lo que debemos pensar en maneras de hacerlo un poco más seguro. Una manera de lograr esto de manera sencilla (y por lo tanto muy utilizada) es crear una clase que contenga el nombre de usuario, el password y otra información importante sobre el usuario (esto depende del programa) y recorrer el arreglo con un ciclo para verificar que el nombre de usuario y contraseña existan y sean congruentes.

Si sólo se van a tener nombres de usuario y contraseñas y no es necesario guardar más información entonces tambíen se podrían crear un par de arreglos, el arreglo nombres contiene en el índice i al i-ésimo usuario y el arreglo passwords contiene en el índice i el password del i-ésimo usuario.

También podrían utilizarse mapas u otros métodos más sofisticados de relacionar información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:JPasswordField

Publicado por cesar augusto nuñez cano (1 intervención) el 27/05/2009 18:39:42
amigos necesito ayuda con un ejemplo de JPasswordField... porfavor necesito que me faciliten un ejemplo sencillo. att: cesar les agradesco si me ayudan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Jair (1 intervención) el 27/12/2012 00:50:59
Que buen aporte Elio. Felicidades!!

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Ana (1 intervención) el 01/10/2013 17:02:56
muchas gracias por tu aporte, esta muy completo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Hermes Fredi Lopez Cabria (1 intervención) el 03/11/2007 00:16:20
hola Campeon ¡¡¡

"Necesito hacer una Apliacion en Java
Que cuando ingrese el usuario y la contraseña me los valide si son correctas o no, para esto debe haberse registrado el usuario en una tabla en SQL,

mas o menos cuando se ingresa al correo que le pide el usuario y la contraseña

este ejercicio es para ingresar a la apliacicion o al sistema realizado en java es decir al menu principal de la base de datos,

lo que quiero como implementar en un sistema de informacion donde
el manejador de base de datos sea SQL
y el lenguaje de programcion es java

pero cuando debo ingresar a la manipulacion del sistema que me pida el usuario y la contraseña;

Ademas, necesito que el nombre del usuario me quede en el menu principal , el sistema dandole la bienvenida al usuario

Gracias ´por sua atencio;

hasta pronto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por carlos (1 intervención) el 18/05/2011 16:28:05
lo puedes obtener en un string de la sig manera
String x = pass.getPasword().toString();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Keviin (1 intervención) el 18/12/2013 17:48:08
donde Pongo el Mesaje es lo hice de la siguiente manera
1
int pass = Integer.parseInt(JOptionPane.showInputDialog("Dijite Password:"));
pero n se como hacer para que aparescan *****
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JPasswordField

Publicado por Marcos Medina (13 intervenciones) el 13/08/2021 05:50:25
Si se puede usar asi, pero el resultado devuelto es una cadena encriptada que sinceramente no se para que sirve porque no he podido encontrar un metodo de passwordField que lea esta cadena y me devuelva el "password original".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPasswordField

Publicado por Elver (1 intervención) el 16/11/2012 05:45:09
1
jPasswordField1.getPassword().toString();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPasswordField

Publicado por Ian (1 intervención) el 11/04/2014 07:30:04
Que tal si intentas de esta forma:

1
String password = String.valueOf(CampoContraseña.getPassword()); // convierte un array de caracteres en un String
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JPasswordField

Publicado por omar (56 intervenciones) el 10/08/2015 01:05:50
1
2
3
4
5
6
7
8
9
10
11
12
boolean validaPass(){
    char[] input=  jpasswordField.getPassword ();
    char []input1=jpasswordField1.getPassword ();
    boolean correcta=true;
    if(input.lenght !=  input1.lenght){
        correcta=false;
    }
    else{
        correcta=Arrays.equals(input, input1)
    }
    return correcta;
}

Para obtener String

1
String pass=new String (input);

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPasswordField

Publicado por Carlos (3 intervenciones) el 16/01/2018 20:01:48
Buenas tardes .. una consulta si a alguien lo resolvio

Estoy haciendo un sistema el cual hay que poner una clave para realizar alguna actividad
estoy usando el ejemplo de la pagina de oracle ..
https://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html
Donde ya esta implentado la validacion de la clave..

En tiempo de ejecución
En la primera creación del Jframe donde esta el JPasswordField , el pass ingresado me lo devuelve como lo ingrese y todo bien ... pero cuando vuelvo a crear el jframe el jPasswordField me devuelve la clave en mayusculas.

A alguien le a pasado al usar este componente ...xq me devuelve en mayusculas la clave ingresada a partir de la segunda instanciacion del ejemplo que mensiono

Como lo puedo solucionar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPasswordField

Publicado por mauricio aleman (1 intervención) el 16/11/2020 23:25:51
mira bro, tenia el mismo problema y vi un video que hacia esto y me funcionó
tienes que hacer un nuevo objeto de tipo string
"String contra = new contra(*tu campo de contraseña*.getText)"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar