Hallo,
nun ich fange erstmal mit dem Grundlegenden an ich habe eine Anwendung für mich geschrieben,
diese ist natürlich in JSP die anschließend auf *.faces von mir konfiguriert wurden.
Faces-config.xml:
Die anwendung läuft auf nem Tomcat 6.0.16 unter Windows.
Das dumme alles Funktioniert nur nicht der Login in meinem Sin^^.
beim Login verwende ich den JDBC Realm auf ne Mysql 5 Datenbank.
JDBCRealm:
web.xml:
index.jsp:
login.jsp:
Nun zu meinem eigentlichen Vorgehen.
Bei meinem Login habe ich einen UserFilter eingerichtet der von javax.servlet.Filter erbt und bei alle Request abfängt.
in der doFilter() Methode hohle ich mir den beim Login eingegebenen User raus
Nun nach dem Raushohlen des Users würde ich "IHN" in der Session speichern
damit die restlichen Seiten auf den User abgestimmt sind und "personalisiert".
und hier tritt für mich der erste fehler auf egal aus welcher Url/seite auch immer der user ist immer null:
ausser bei der url von /meinProject/j_security_check da bringt es mir den richtigen user hervor aber
leider versucht er bei sowas dann direct die seite j_security_check anzusprechen die es natürlich nicht im project gibt
und das wieder rum wirft 404 Error was natürlich nur selbstverständlich ist ...
auf die j_security_check versucht er aber auch nur zu gehen wenn ich die login.faces seite direct anspreche.
Nun meine vermuttung ist einfach das die faces-config nicht richtig greifen und das weiterleiten von login auf eine protect seite nicht greift.
ich weiß da nicht mehr weiter entweder wirft er mir nen 404er beim direckten zugriff oder nen 400
sieht jemand da einen fehler oder baut das nach und versucht mir da weiter zuhelfen.
Ohne den Filter und ohne das direkte ansprechen der Login seite Funktioniert es und ich komme in den geschützen bereich
Viele Grüße
Dozor
nun ich fange erstmal mit dem Grundlegenden an ich habe eine Anwendung für mich geschrieben,
diese ist natürlich in JSP die anschließend auf *.faces von mir konfiguriert wurden.
Faces-config.xml:
Code:
<navigation-rule>
<display-name>login</display-name>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<to-view-id>/protect/test.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<display-name>protect/test</display-name>
<from-view-id>/protect/test.jsp</from-view-id>
<navigation-case>
<to-view-id>/protect/test2.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Die anwendung läuft auf nem Tomcat 6.0.16 unter Windows.
Das dumme alles Funktioniert nur nicht der Login in meinem Sin^^.
beim Login verwende ich den JDBC Realm auf ne Mysql 5 Datenbank.
JDBCRealm:
Code:
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost:3306/testlogin"
connectionName="root" connectionPassword=""
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>
web.xml:
Code:
<filter>
<description></description>
<display-name>UserFilter</display-name>
<filter-name>UserFilter</filter-name>
<filter-class>de.test.UserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<security-constraint>
<display-name>TestProject</display-name>
<web-resource-collection>
<web-resource-name>TestProject</web-resource-name>
<url-pattern>/protect/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>allgemeine acces role</description>
<role-name>test001</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.faces</form-login-page>
<form-error-page>/loginError.faces</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>allgemeine access role</description>
<role-name>test001</role-name>
</security-role>
index.jsp:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<c:redirect url="/protect/test.faces"></c:redirect>
</html>
login.jsp:
Code:
<form action="j_security_check" method="get" name="loginForm">
<table>
<TBODY>
<tr>
<td>UserID:</td>
<TD><input type="text" name="j_username" size="2" /></TD>
</tr>
<tr>
<td>Password:</td>
<TD><input type="password" name="j_password" size="20" /></TD>
</tr>
<TR>
<TD>[url="javascript:document.loginForm.submit()"] Login [/url]</TD>
</TR>
</TBODY>
</table>
</form>
Nun zu meinem eigentlichen Vorgehen.
Bei meinem Login habe ich einen UserFilter eingerichtet der von javax.servlet.Filter erbt und bei alle Request abfängt.
in der doFilter() Methode hohle ich mir den beim Login eingegebenen User raus
Code:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
String method = "doFilter";
try {
HttpServletRequest httpRequest = ((HttpServletRequest) request);
HttpServletResponse httpResponse = ((HttpServletResponse) response);
HttpSession session = httpRequest.getSession();
// get username from the request ...
String user = request.getParameter("j_username");
// if(user.isValid())
//session.setAttribute("username", user);
filterChain.doFilter(request, response);
}catch(Throwable e){
e.printStackTrace();
}
}
Nun nach dem Raushohlen des Users würde ich "IHN" in der Session speichern
damit die restlichen Seiten auf den User abgestimmt sind und "personalisiert".
und hier tritt für mich der erste fehler auf egal aus welcher Url/seite auch immer der user ist immer null:
ausser bei der url von /meinProject/j_security_check da bringt es mir den richtigen user hervor aber
leider versucht er bei sowas dann direct die seite j_security_check anzusprechen die es natürlich nicht im project gibt
und das wieder rum wirft 404 Error was natürlich nur selbstverständlich ist ...
auf die j_security_check versucht er aber auch nur zu gehen wenn ich die login.faces seite direct anspreche.
Nun meine vermuttung ist einfach das die faces-config nicht richtig greifen und das weiterleiten von login auf eine protect seite nicht greift.
ich weiß da nicht mehr weiter entweder wirft er mir nen 404er beim direckten zugriff oder nen 400
sieht jemand da einen fehler oder baut das nach und versucht mir da weiter zuhelfen.
Ohne den Filter und ohne das direkte ansprechen der Login seite Funktioniert es und ich komme in den geschützen bereich
Viele Grüße
Dozor