2014-07-12 45 views
0

我有問題,玉蘭花用戶有關春天安全 我想要遵循玉蘭cms頁面上提供的所有指導方針,但沒有人爲我工作。我已經按照描述的方式配置了web.xml和spring安全上下文+我自己的配置,用於從db中檢索用戶。我可以用jetty(eclipse)啓動應用程序,而沒有任何關於bean etx的錯誤,但是當登錄頁面出現時我無法實現。 在我的開發者玉蘭碼頭實例中運行時,我被要求使用magnolia頁面登錄,成功登錄後沒有彈簧安全性,迫使我再次登錄一次。這是例如URL白玉蘭CMS +花朵+彈簧安全

http://localhost:9999/magnolia-blossom-sample-webapp/home/tours/statues-tour.html 

當部署公共木蘭例如Tomcat上我不問登錄到玉蘭,但我得到我的網頁沒有登錄頁面與春天的安全性。

http://localhost:8080/magnoliaPublic/home/tours.html 

問題是我可以錯過那裏,我無法獲得授權頁面與彈簧安全登錄。

這是我的配置

玉蘭公共/作者web.xml中(因爲web.xml文件中不放在我的花模塊)

<filter> 
    <display-name>Magnolia global filters</display-name> 
    <filter-name>magnoliaFilterChain</filter-name> 
    <filter-class>info.magnolia.cms.filters.MgnlMainFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>magnoliaFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
    </filter-mapping> 
    <filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>info.magnolia.module.blossom.web.InstallationAwareDelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/home/*</url-pattern> // /* doesn't work neither 
</filter-mapping> 
    <listener> 
    <listener-class>info.magnolia.init.MagnoliaServletContextListener</listener-class> 
    </listener> 
    <context-param> 
    <description>Vaadin production mode</description> 
    <param-name>productionMode</param-name> 
    <param-value>true</param-value> 
    </context-param> 

春季安全上下文的applicationContext-security.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<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/security 
    http://www.springframework.org/schema/security/spring-security-3.1.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" 
     default-autowire="byType"> 

    <beans:bean id="authSuccessHandler" class="security.auth.AuthenticationSuccessHandler"> 
     <beans:property name="userLogic" ref="userLogic"/> 
    </beans:bean> 

    <beans:bean id="authFailureHandler" class="security.auth.AuthenticationFailureHandler"> 
    </beans:bean> 

    <http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/**" access="isAuthenticated()" /> 
     <intercept-url pattern="/*" access="hasRole('adminMLM')" /> 
     <form-login login-page="/login"   
      authentication-success-handler-ref="authSuccessHandler" 
      authentication-failure-handler-ref="authFailureHandler" 
      default-target-url="/"  
     /> 
     <logout /> 
    </http> 

    <beans:bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"> 
     <beans:property name="userDetailsService" ref="userLogic"/>  
     <beans:property name="passwordEncoder" ref="userLogic"/> 
     <beans:property name="saltSource" ref="userLogic"/> 
    </beans:bean> 

    <authentication-manager> 
     <authentication-provider ref="daoAuthenticationProvider" /> 
    </authentication-manager> 




</beans:beans> 

的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:blossom="http://www.magnolia-cms.com/schema/blossom" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.magnolia-cms.com/schema/blossom 
     http://www.magnolia-cms.com/schema/blossom.xsd "> 

    <bean class="info.magnolia.blossom.sample.module.service.SalesApplicationWebServiceImpl" /> 

    <bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy"/> 



</beans> 

開花-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:annotation-config/> 

    <context:component-scan base-package="logic.impl" /> 
    <context:component-scan base-package="info.magnolia.blossom.sample.module" use-default-filters="false"> 
    <context:include-filter type="annotation" expression="info.magnolia.module.blossom.annotation.Template"/> 
    <context:include-filter type="annotation" expression="info.magnolia.module.blossom.annotation.Area"/> 
    <context:include-filter type="annotation" expression="info.magnolia.module.blossom.annotation.DialogFactory"/> 
    <context:include-filter type="annotation" expression="info.magnolia.module.blossom.annotation.VirtualURIMapper"/> 
    <context:include-filter type="assignable" expression="info.magnolia.cms.beans.config.VirtualURIMapping"/> 
    </context:component-scan> 


    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <property name="customArgumentResolvers"> 
     <list> 
     <bean class="info.magnolia.module.blossom.web.BlossomHandlerMethodArgumentResolver" /> 
     </list> 
    </property> 
    <!-- For @Valid - JSR-303 Bean Validation API --> 
    <property name="webBindingInitializer"> 
     <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> 
     <property name="validator"> 
      <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 
     </property> 
     </bean> 
    </property> 
    </bean> 

    <bean class="info.magnolia.module.blossom.preexecution.BlossomHandlerMapping"> 
    <property name="targetHandlerMappings"> 
     <list> 
     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
      <property name="useSuffixPatternMatch" value="false" /> 
     </bean> 
     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 
     </list> 
    </property> 
    </bean> 

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> 

    <bean class="info.magnolia.module.blossom.view.UuidRedirectViewResolver"> 
    <property name="order" value="1" /> 
    </bean> 

    <!-- JSP - renders all views that end with .jsp --> 
    <bean class="info.magnolia.module.blossom.view.TemplateViewResolver"> 
    <property name="order" value="2"/> 
    <property name="prefix" value="/templates/blossomSampleModule/"/> 
    <property name="viewNames" value="*.jsp"/> 
    <property name="viewRenderer"> 
     <bean class="info.magnolia.module.blossom.view.JspTemplateViewRenderer"> 
     <property name="contextAttributes"> 
      <map> 
      <entry key="damfn"> 
       <bean class="info.magnolia.rendering.renderer.ContextAttributeConfiguration"> 
       <property name="name" value="damfn"/> 
       <property name="componentClass" value="info.magnolia.dam.asset.functions.DamTemplatingFunctions"/> 
       </bean> 
      </entry> 
      </map> 
     </property> 
     </bean> 
    </property> 
    </bean> 

    <!-- Freemarker - renders all views that end with .ftl --> 
    <bean class="info.magnolia.module.blossom.view.TemplateViewResolver"> 
    <property name="order" value="3"/> 
    <property name="prefix" value="/blossomSampleModule/"/> 
    <property name="viewNames" value="*.ftl"/> 
    <property name="viewRenderer"> 
     <bean class="info.magnolia.module.blossom.view.FreemarkerTemplateViewRenderer"> 
     <property name="contextAttributes"> 
      <map> 
      <entry key="cms"> 
       <bean class="info.magnolia.rendering.renderer.ContextAttributeConfiguration"> 
       <property name="name" value="cms"/> 
       <property name="componentClass" value="info.magnolia.templating.freemarker.Directives"/> 
       </bean> 
      </entry> 
      <entry key="cmsfn"> 
       <bean class="info.magnolia.rendering.renderer.ContextAttributeConfiguration"> 
       <property name="name" value="cmsfn"/> 
       <property name="componentClass" value="info.magnolia.templating.functions.TemplatingFunctions"/> 
       </bean> 
      </entry> 
      <entry key="damfn"> 
       <bean class="info.magnolia.rendering.renderer.ContextAttributeConfiguration"> 
       <property name="name" value="damfn"/> 
       <property name="componentClass" value="info.magnolia.dam.asset.functions.DamTemplatingFunctions"/> 
       </bean> 
      </entry> 
      </map> 
     </property> 
     </bean> 
    </property> 
    </bean> 




</beans> 

BlossomSampleModule.java

public class BlossomSampleModule extends BlossomModuleSupport implements ModuleLifecycle { 

    public void start(ModuleLifecycleContext moduleLifecycleContext) { 
     if (moduleLifecycleContext.getPhase() == ModuleLifecycleContext.PHASE_SYSTEM_STARTUP) { 
      super.initRootWebApplicationContext("classpath:/applicationContext.xml"); 
      super.initBlossomDispatcherServlet("blossom", "classpath:/blossom-servlet.xml, classpath:/applicationContext-security.xml"); 

     } 
    } 

    public void stop(ModuleLifecycleContext moduleLifecycleContext) { 
     if (moduleLifecycleContext.getPhase() == ModuleLifecycleContext.PHASE_SYSTEM_SHUTDOWN) { 
      super.destroyDispatcherServlets(); 
      super.closeRootWebApplicationContext(); 
     } 
    } 
} 

問候

回答

2

最後一個過濾器在玉蘭的過濾器鏈 - RenderingFilter表現爲過濾器鏈終止。如果從Magnolia(或Blossom)發現要呈現的內容,它將不會繼續處理過濾器鏈,因此您的其他過濾器(彈簧安全)將不會執行。您需要確保您的過濾器在Magnolia過濾器鏈或Magnolia過濾器鏈內執行。爲了實現以上目的,請在Magnolia的AdminCentral中定義您的過濾條件,在config:/server/filters之下... ContextFilter之後和CacheFilter之前的任何地方都應該沒問題。使用其他過濾器作爲示例如何配置您的設備或查看herehere

HTH,