Einen wunderschönen guten Morgen.
Ich versuche seit ein paar Tagen ein Login mit JSF hinzubekommen, jedoch klappt der Login nur begrenzt. Wenn ich eine neue Seite nach dem Login aufrufe, bin ich wieder ausgeloggt.
Entweder ich hab nen tierischen Denkfehler, oder ich hab irgendwas übersehen.
Meine Bean:
Die index.xhtml
hallo.xhtml
Sobald ich dann den Link folge, um auf die 2. Seite geworfen zu werden, werde ich ausgeloggt...
Dabei ist die 2. Seite fast identisch mit hallo.xhtml, es fehlt nur der Link.
Ist es nur nen einfacher denkfehler von mir und ich seh den Wald vor lauter Bäumen nicht, oder hab ich was gravierendes vergessen/ignoriert?
Schonmal vielen dank im vorraus.
Greetz,
Metamorphosis
Ich versuche seit ein paar Tagen ein Login mit JSF hinzubekommen, jedoch klappt der Login nur begrenzt. Wenn ich eine neue Seite nach dem Login aufrufe, bin ich wieder ausgeloggt.
Entweder ich hab nen tierischen Denkfehler, oder ich hab irgendwas übersehen.
Meine Bean:
Java:
package meta.forum;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.*;
import java.util.logging.*;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
@ManagedBean
@SessionScoped
public class User {
private String username;
private String password;
// Verbindungsinformationen zur Datenbank
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/forum";
private String dbUser = "****";
private String dbPass = "****";
private static final String salt = "jk2eP0ls";
public User() {
}
public void setUsername(String aUserName) {
username = aUserName;
}
public String getUsername() {
return username;
}
public void setPassword(String aPassWord) {
password = aPassWord;
}
public String getPassword() {
return password;
}
public String createUser() {
//Verbindung zur Datenbank aufbauen
try{
Class.forName(driver);
Connection con = DriverManager.getConnection(url, dbUser, dbPass);
String qry = "INSERT INTO user VALUES(null, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(qry);
pstmt.setString(1, username);
String aPassword = pwSec(salt + password);
pstmt.setString(2, aPassword);
pstmt.executeUpdate();
pstmt.close();
con.close();
return "index";
}catch(Exception ex){
ex.printStackTrace();
return null;
}
}
public String login(){
try{
Class.forName(driver);
Connection con = DriverManager.getConnection(url, dbUser, dbPass);
String qry = "SELECT username, password FROM user WHERE username = ? AND password = ?";
PreparedStatement pstmt = con.prepareStatement(qry);
pstmt.setString(1, username);
String aPassword = pwSec(salt + password);
pstmt.setString(2, aPassword);
ResultSet rs = pstmt.executeQuery();
if(rs.next() && rs.getString("username") != null) {
return "hallo";
}else{
return "fail";
}
}catch(Exception ex){
ex.printStackTrace();
return "fail";
}
}
private String pwSec(String vPass) throws NoSuchAlgorithmException{
/* Berechnung */
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(vPass.getBytes());
byte[] result = md5.digest();
/* Ausgabe */
StringBuffer hexString = new StringBuffer();
for (int i=0; i<result.length; i++) {
hexString.append(Integer.toHexString(0xFF & result[i]));
}
return hexString.toString();
}
}
Die index.xhtml
HTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Forum</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="2" border="0">
Username: <h:inputText id="username"
value="#{user.username}"/>
Passwort: <h:inputSecret id="password"
value="#{user.password}"/>
</h:panelGrid>
<h:commandButton id="submit"
type="submit"
value="Login"
action="#{user.login}"/>
<br />
<h:commandLink id="create"
value="Neues Konto erstellen"
action="create.xhtml"/>
</h:form>
</h:body>
</html>
hallo.xhtml
HTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Login Erfolgreich :D <br/>
Du bist eingeloggt als #{user.username}.
<h:form>
<h:commandLink id="create"
value="Weiter..."
action="test2.xhtml"/>
</h:form>
</h:body>
</html>
Sobald ich dann den Link folge, um auf die 2. Seite geworfen zu werden, werde ich ausgeloggt...
Dabei ist die 2. Seite fast identisch mit hallo.xhtml, es fehlt nur der Link.
Ist es nur nen einfacher denkfehler von mir und ich seh den Wald vor lauter Bäumen nicht, oder hab ich was gravierendes vergessen/ignoriert?
Schonmal vielen dank im vorraus.
Greetz,
Metamorphosis