Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/07/2015, 11:54
Avatar de GusGarsaky
GusGarsaky
 
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 2
Respuesta: Cifrado de contraseñas

Siempre te mostrará contaseña incorrecta, porque a la variable user nunca le asignas un valor, por ende, cuando haces if(user != "") nunca se cumplirá ya que user está vacío, y por consiguiente, se ejecutará la sentencia else en la que muestras 'contraseña incorrecta'.

Te voy a dar algunos consejillos.

1. No mezcles código de modelo/negocio en tus vistas. Los scriptlets son malísimos desde un punto de vista de principios de desarrollo de software. Debes tener una capa de abstracción, que en tu caso es una clase llamada DB.

2. En lugar de scriplets usar JSTL (etiquetas).

Por ejemplo, esta clase se encarga del acceso a datos (DAO):

Código Java:
Ver original
  1. public class LoginDao {
  2.  
  3.     public String login(String username, String password) {
  4.         String sql = "SELECT usuario FROM tusuario WHERE " +
  5.                      "userPrincipalName = ? AND pwdLastSet = ?";
  6.         try (Connection con = ConnectionHelper.getConnection();
  7.              PrepareStatement pst = con.prepareStatement(sql)) {
  8.              // validas username y password si deseas
  9.              ResultSet rs = pst.executeQuery();
  10.              while(rs.next()) {
  11.                 return rs.getString("username");
  12.              }
  13.         } catch(SQLException e) {
  14.             e.printStackTrace();
  15.             return "";
  16.         }
  17.     }
  18. }

Y así la usas en tu JSP:

Código XML:
Ver original
  1. <!-- esto va en el top de tu página JSP -->
  2. <jsp:useBean id="userDao" class="tuspaquetes.UserDao" />
  3.  
  4.  
  5. <!-- crea una variable 'loginUsername' y le asigna el retorno de la
  6.    llamada al método login(String username, String password) -->
  7. <c:set var="user"
  8.    value="#{userDao.login(request.getParameter('username'), request.getParameter('password')}" />
  9.  
  10. <!-- si loginUsername no está vacío, login correcto -->
  11. <c:if test="#{!user.isEmpty()}">
  12.     <c:set var="userPrincipalName" value="#{user}" scope="session" />
  13.     <c:set var="logged" value="#{true}" scope="session" />
  14.     <c:redirect url="bienvenido.jsp" />
  15. </c:if>
  16. <!-- caso contrario -->
  17. <c:otherwise>
  18.     <script>alert('Usuario o contraseña incorrectos');</script>
  19. </c:otherwise>

Fíjate que el resultado de la llamada al método login, se lo asignamos a 'user', y esta misma variable la asignamos al scope session.

1. <c:set> Establece variables.
2. <c:if> If
3. <c:otherwise> Else
4. <jsp:useBean> Usar una clase en JSP (como hacer import)
5. <c:redirect> Redireccionar