在Jasperserver中添加多个登录页面

时间:2013-05-14 13:58:06

标签: jasperserver

我想为单个jasperserver添加多个登录页面。 我已自定义代码并在moudles / login /文件夹中添加了login1.jsp和login2.jsp。 我还在\ jasperserver-war \ src \ main \ webapp \ WEB-INF \ jasperserver-servlet.xml中添加了以下代码

  

bean id =“urlHandlerMapping”class =“org.springframework.beans.factory.config.PropertiesFactoryBean”>

    <property name="properties">
        <props>
           <prop key="/fileview/**">jsFileViewContr</prop>

            <!-- anonymous pages -->
            <prop key="/login1.html">jsCommContr</prop>
            <prop key="/login.html">jsCommContr</prop>
            <prop key="/logout.html">jsCommContr</prop>

  <!-- js mac method name resolver -->
    <bean id="paramResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
        <property name="mappings">
            <props>
                <prop key="/login1.html">entry</prop>
                <prop key="/home.html">homePage</prop>
                <prop key="/login.html">login</prop>

我还在com.jaspersoft.jasperserver.war.control包中的JSCommonController.java中添加了以下代码。

  

public ModelAndView login1(HttpServletRequest req,HttpServletResponse   RES)               抛出ServletException {           setupLoginPage(REQ);

    return new ModelAndView("modules/login/login");
}  
     

public ModelAndView login2(HttpServletRequest req,HttpServletResponse   RES)               抛出ServletException {           setupLoginPage(REQ);

    return new ModelAndView("modules/login/login");
}

我在重建后部署了服务器。 但是当我进入

  

本地主机:8080 /的JasperServer / login1.html

它需要我

  

本地主机:8080 /的JasperServer / login.html的

登录此页后,我需要

  

本地主机:8080 /的JasperServer / login1.html

但是当我尝试登录此页面时,登录事件会成功发生,但它会让我保持同一页面。

有人知道如何在jasper服务器中添加多个登录页面吗? 请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:1)

我找到了它的方法:)并且答案如下:

添加新登录页面的步骤 创建一个新的登录jsp页面。 entry.jsp示例 将它保存在jasperserver-war / src / main / webapp / WEB-INF / jsp / modules / login / 在匿名页面部分的jasper-servlet.xml中的urlHandlerMapping bean部分中添加page属性条目,如下所示:

<bean id="urlHandlerMapping" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
     <property name="properties">
         <props>
            <prop key="/fileview/**">jsFileViewContr</prop>
             <!-- anonymous pages -->
             <prop key="/entry.html">jsCommContr</prop>
             <prop key="/login.html">jsCommContr</prop>
             <prop key="/logout.html">jsCommContr</prop>

还在paramResolver bean部分的同一文件中添加以下代码。

<bean id="paramResolver"  class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
     <property name="mappings">
         <props>
            <prop key="/entry.html">entry</prop>
                <prop key="/home.html">homePage</prop>
                    <prop key="/login.html">login</prop>

<prop key="/entry.html">jsCommContr</prop>

这将调用映射为

的控制器servlet
<bean id="jsCommContr" class="com.jaspersoft.jasperserver.war.control.JSCommonController">

在com.jaspersoft.jasperserver.war.control.JSCommonController.java中添加以下代码

  

public ModelAndView条目(HttpServletRequest req,HttpServletResponse   RES)             抛出ServletException {         setupLoginPage(REQ);

  return new ModelAndView("modules/login/entry");
}

这将从文件夹modules / login / folder为url

加载entry.jsp
  

本地主机:8080 /的JasperServer / entry.html

我们还必须将此页面条目添加到applicationContext-security-web.xml中的filterInvocationInterceptor bean

修改applicationContext-security.xml,如下所示:

<bean id="filterInvocationInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
    <property name="authenticationManager">
        <ref bean="authenticationManager"/>
    </property>
    <property name="accessDecisionManager">
        <ref bean="httpRequestAccessDecisionManager"/>
    </property>
    <!-- <property name="runAsManager"><ref bean="runAsManager"/></property>  -->
    <property name="objectDefinitionSource">
        <value>
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /entry.html=ROLE_ANONYMOUS,ROLE_USER,ROLE_ADMINISTRATOR
            /login.html=ROLE_ANONYMOUS,ROLE_USER,ROLE_ADMINISTRATOR
           /logout.html=ROLE_ANONYMOUS,ROLE_USER,ROLE_ADMINISTRATOR,IS_AUTHENTICATED_FULLY

再次构建war文件并将其重新部署到服务器上。 现在你可以使用

  

本地主机:8080 /的JasperServer / entry.html

作为登录页面。 要更改登录页面的UI,请自定义entry.jsp和pageSpecific.css。

文件位置:

entry.jsp: - /jasperserver/jasperserver-war/src/main/webapp/WEB-INF/jsp/modules/login/entry.jsp

jasperserver-servlet.xml: - /jasperserver/jasperserver-war/src/main/webapp/WEB-INF/jasperserver-servlet.xml

JSCommonController.java: - 物理路径:/jasperserver/jasperserver-war-jar/src/main/java/com/jaspersoft/jasperserver/war/control/JSCommonController.java 包路径:com.jaspersoft.jasperserver.war.control / JSCommonController

applicationContext-security-web.xml: - /jasperserver/jasperserver-war/shared-config/applicationContext-security-web.xml