Hallöle
ich bin jetzt seit Tagen mit einem Problem beschäftigt und finde den Fehler einfach nicht.
Hab extra en Buch, einen ganzen Haufen Tutorials und Foren zu rate gezogen aber ich weiß einfach nicht mehr weiter.
Und zwar folgendes:
Ich habe eine Web-Application mit Spring, JSF und RichFaces aufgebaut. Das Ganze läuft auf einem Tomcat. Bisher hat alles wunderbar geklappt jedoch möchte ich jetzt "Spring Security" verwenden um bestimmte Seiten für nicht angemeldete Benutzer zu blocken.
Ich habe jetzt alles konfiguriert und wenn ich eine geschützte Seite per Hand (also indem ich die URL in die Adressleiste meines Browsers eingebe) aufrufe, dann erscheint auch die Standard-Spring-Login-Seite. Klicke ich jedoch auf einer anderen Seite einen Link auf eine geschützte Seite an (das ganze läuft über JSF Navigation-Cases), dann geht die Seite direkt auf (ohne vorher die Login-Page zu zeigen) und erst wenn ich von dort aus auf eine x-beliebige (nicht) geschützte Seite zugreifen möchte dann fragt er mich nach den Login-Daten.
Beispiel:
Geschützte Seite: secure.jsp
Ungeschützte Seiten: a.jsp und b.jsp
1) Ich bin auf "a.jsp" und klicke auf den Link für "secure.jsp"
2) "secure.jsp" geht auf
3) Ich klicke nun auf der Seite "secure.jsp" auf den Link zu "b.jsp".
4) Login-Page geht auf
Ich checks einfach nicht. Eigentlich sollte ja die Login-Seite VOR der aufzurufenden Seite aufgehen aber er machts danach. Kann das an einer Reihenfolge in einer Konfigurationsdatei liegen?
EDIT:
Im übrigen ist mir aufgefallen, dass in der Adressleiste meines Browsers NIE die aktuelle Seite drin steht, sondern immer die URL zur Seite auf der ich vorher war. Könnte das damit zusammenhängen?
Hier mal die Dateien:
web.xml
faces-config.xml
security.xml
Ich checks einfach nicht, woran es liegt.
Mit Sicherheit ists nur ne Banalität aber das ists ja meistens.
Habt ihr eine Idee?
ich bin jetzt seit Tagen mit einem Problem beschäftigt und finde den Fehler einfach nicht.
Hab extra en Buch, einen ganzen Haufen Tutorials und Foren zu rate gezogen aber ich weiß einfach nicht mehr weiter.
Und zwar folgendes:
Ich habe eine Web-Application mit Spring, JSF und RichFaces aufgebaut. Das Ganze läuft auf einem Tomcat. Bisher hat alles wunderbar geklappt jedoch möchte ich jetzt "Spring Security" verwenden um bestimmte Seiten für nicht angemeldete Benutzer zu blocken.
Ich habe jetzt alles konfiguriert und wenn ich eine geschützte Seite per Hand (also indem ich die URL in die Adressleiste meines Browsers eingebe) aufrufe, dann erscheint auch die Standard-Spring-Login-Seite. Klicke ich jedoch auf einer anderen Seite einen Link auf eine geschützte Seite an (das ganze läuft über JSF Navigation-Cases), dann geht die Seite direkt auf (ohne vorher die Login-Page zu zeigen) und erst wenn ich von dort aus auf eine x-beliebige (nicht) geschützte Seite zugreifen möchte dann fragt er mich nach den Login-Daten.
Beispiel:
Geschützte Seite: secure.jsp
Ungeschützte Seiten: a.jsp und b.jsp
1) Ich bin auf "a.jsp" und klicke auf den Link für "secure.jsp"
2) "secure.jsp" geht auf
3) Ich klicke nun auf der Seite "secure.jsp" auf den Link zu "b.jsp".
4) Login-Page geht auf
Ich checks einfach nicht. Eigentlich sollte ja die Login-Seite VOR der aufzurufenden Seite aufgehen aber er machts danach. Kann das an einer Reihenfolge in einer Konfigurationsdatei liegen?
EDIT:
Im übrigen ist mir aufgefallen, dass in der Adressleiste meines Browsers NIE die aktuelle Seite drin steht, sondern immer die URL zur Seite auf der ich vorher war. Könnte das damit zusammenhängen?
Hier mal die Dateien:
web.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<description></description>
<display-name>Onlineshop with Tomcat</display-name>
<!-- Java Server Faces parameters -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<!-- Richfaces parameters -->
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<!-- Facelets parameters -->
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<!-- Facelets tag libs -->
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/facelets/tags/onlineshop.taglib.xml</param-value>
</context-param>
<!-- Spring parameters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/security.xml
</param-value>
</context-param>
<!--
Filter
-->
<!-- Richfaces filter -->
<filter>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<!-- Spring Security Filter -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<!-- Richfaces filter mapping -->
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>FacesServlet</servlet-name>
</filter-mapping>
<!-- Spring Security Filter Mapping -->
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- Spring Framework Listener -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- Java Server Faces Listener -->
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/jsp/user/articleList.jsp</welcome-file>
</welcome-file-list>
</web-app>
faces-config.xml
Code:
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
<converter>
<converter-id>ArticlegrouppropertyConverter</converter-id>
<converter-class>de.daniva.javaee.jsf.converter.ArticlegrouppropertyConverter</converter-class>
</converter>
<navigation-rule>
<navigation-case>
<from-outcome>administration</from-outcome>
<to-view-id>/jsp/admin/mainAdmin.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>valueaddedtaxList</from-outcome>
<to-view-id>/jsp/admin/valueaddedtaxList.jsp</to-view-id>
</navigation-case>
... HIER KOMMEN NOCH EINEN GANZEN HAUFEN ÄHNLICHER NAVIGATIONS-CASE EINTRÄGE ...
</navigation-rule>
<managed-bean>
<managed-bean-name>navigateToLastController</managed-bean-name>
<managed-bean-class>de.daniva.onlineshop.jsf.NavigateToLastController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
... HIER KOMMEN NOCH EINEN GANZEN HAUFEN ÄHNLICHER MANAGED-BEAN EINTRÄGE ...
<validator>
<validator-id>jsfDoubleValidator</validator-id>
<validator-class>de.daniva.javaee.jsf.validator.JsfDoubleValidator</validator-class>
</validator>
</faces-config>
security.xml
Code:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
<http>
<intercept-url pattern="/jsp/admin/articleDetail.jsp*" access="ROLE_ADMIN" />
<form-login />
<logout />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="admin" password="secret" authorities="ROLE_ADMIN,ROLE_USER" />
<user name="user" password="secret" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
Ich checks einfach nicht, woran es liegt.
Mit Sicherheit ists nur ne Banalität aber das ists ja meistens.
Habt ihr eine Idee?
Zuletzt bearbeitet: