【问题标题】:Access Denied error: Spring web MVC(4.1.6)+ Spring security(4.0.1)+ Apache TIles(3.0.5)拒绝访问错误:Spring web MVC(4.1.6)+ Spring security(4.0.1)+ Apache TIles(3.0.5)
【发布时间】:2015-07-12 06:01:11
【问题描述】:

我尝试将 Apache Tiles 与 Spring Security 集成。但是我的网页显示“错误:访问被拒绝”。

Spring MVC + Spring Security -- https://github.com/spring-projects/spring-security/tree/master/samples/gae-xml

我的瓦片配置 xml--

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC  
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"  
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">  
<tiles-definitions>  
    <definition name="base.definition"  
        template="/jsp/layout.jsp">  
        <put-attribute name="title" value="" />  
        <put-attribute name="header" value="/jsp/header.jsp" />  
        <put-attribute name="menu" value="" />  
        <put-attribute name="body" value="" />  
        <put-attribute name="footer" value="/jsp/footer.jsp" />  
    </definition>  

    <definition name="home" extends="base.definition">  
        <put-attribute name="title" value="Home" /> 
        <put-attribute name="body" value="/jsp/home.jsp" />  
    </definition>  

    <definition name="hello" extends="base.definition">  
        <put-attribute name="title" value="logged In" />  
        <put-attribute name="body" value="/jsp/hello.jsp" />  
    </definition>  

</tiles-definitions>

安全配置 xml--

 <http use-expressions="true" entry-point-ref="gaeEntryPoint">
        <intercept-url pattern="/" access="permitAll" />
        <intercept-url pattern="/logout.do" access="permitAll" />
        <intercept-url pattern="/register.do" access="hasRole('NEW_USER')" />
        <intercept-url pattern="/**" access="hasRole('USER')" />
        <custom-filter position="PRE_AUTH_FILTER" ref="gaeFilter" />
    </http>

    <b:bean id="gaeEntryPoint" class="com.app.security.GoogleAccountsAuthenticationEntryPoint" />

    <b:bean id="gaeFilter" class="com.app.security.GaeAuthenticationFilter">
        <b:property name="authenticationManager" ref="authenticationManager"/>
    </b:bean>

    <authentication-manager alias="authenticationManager">
        <authentication-provider ref="gaeAuthenticationProvider"/>
    </authentication-manager>

    <b:bean id="gaeAuthenticationProvider" class="com.app.security.GoogleAccountsAuthenticationProvider">
        <b:property name="userRegistry" ref="userRegistry" />
    </b:bean>

    <b:bean id="userRegistry" class="com.app.security.GaeDatastoreUserRegistry" />

web.xml--

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/gae-security.xml,
            /WEB-INF/gae-servlet.xml
        </param-value>
    </context-param>

    <servlet>
        <servlet-name>gae</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>gae</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>gae</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>



    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
      <filter-name>springSecurityFilterChain</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

弹簧控制器--

    @RequestMapping(value="/",method=RequestMethod.GET)
    public String landingPage(ModelMap model) {
        return "home";
    }

    @RequestMapping(value="/home.do",method=RequestMethod.GET)
    public String loggedIn(ModelMap model){
        return "hello";
    }

我是 Spring Security 的初学者,在尝试使用 Apache Tiles 时,我反复收到拒绝访问错误。请帮忙。

【问题讨论】:

    标签: spring google-app-engine spring-mvc spring-security apache-tiles


    【解决方案1】:

    也许您应该检查您的 [intercept-url/] 模式...似乎 [intercept-url pattern="/" access="permitAll"/] 被下面的其他模式覆盖...在 spring security url 模式可以被我们定义的下一个模式覆盖。尝试从最具体的 url 映射到最通用的。干杯。

    【讨论】:

    • 正在使用 BindingResults ,它给出了这样的异常。稍作修改即可解决错误。
    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 2013-10-01
    • 2015-11-13
    • 2023-03-16
    • 2017-01-10
    • 2017-10-01
    • 2015-06-18
    • 2015-08-07
    相关资源
    最近更新 更多