Das Spring Framework ist eine Sammlung von Java-Klassen und Methoden zur Unterstützung von Applications. Hier sind einige Lösungen aufgezeigt.
<bean id="testBean" class="com.intersult.test.TestBean"> <property name="testProperty" value="some-value"/> </bean>
Im Tomcat werden die catalina.properties zwar auch als System Properties geladen, allerdings anschließend durch den Web Application Class Loader überschrieben. Möchte man sie im Application Context zugreifbar machen, braucht man folgenden Eintrag:
<context:property-placeholder system-properties-mode="OVERRIDE"/>
<sec:http auto-config="true"> <sec:anonymous enabled="false"/> <sec:intercept-url pattern="/faces/page/**" access="ROLE_TEMPORARY"/> <sec:form-login login-page="/login"/> <sec:custom-filter ref="temporaryLoginFilter" before="FILTER_SECURITY_INTERCEPTOR"/> <sec:logout logout-success-url="/faces/security/login.xhtml"/> </sec:http>
@Component public class TemporaryLoginFilter extends GenericFilterBean { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (...) throw new AuthenticationCredentialsNotFoundException("Authentication required"); if (...) SecurityContextHolder.getContext().setAuthentication(authentication); chain.doFilter(request, response); } }
Erklärung: Der Kunstgriff besteht darin, einen Custom-Filter vor dem FilterSecurityInterceptor in die Filter-Chain einzuhängen. Der Grund besteht darin, dass an dieser Stelle Security-Exceptions vom ExceptionTranslationFilter gefangen werden und in einem Redirect auf die Login-Seite resultieren bzw. je nachdem, welchen Login-Mechanismus man standardmäßig konfiguriert hat. Andernfalls kann man den Benutzer durch setzen des Security-Context programmatisch einloggen.