0

我想将多个登录页面添加到单个 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) throws ServletException { setupLoginPage(req);

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

public ModelAndView login2(HttpServletRequest req, HttpServletResponse res) throws ServletException { setupLoginPage(req);

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

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

本地主机:8080/jasperserver/login1.html

它需要我

本地主机:8080/jasperserver/login.html

在此页面上登录后,我需要

本地主机:8080/jasperserver/login1.html

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

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

谢谢。

4

1 回答 1

1

我找到了方法:),答案如下:

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

<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 entry(HttpServletRequest req, HttpServletResponse res) throws ServletException { setupLoginPage(req);

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

这将从文件夹 modules/login/ 文件夹中为 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

于 2013-05-15T07:29:14.877 回答