【问题标题】:spring security error in console and restricted folder is not working控制台和受限文件夹中的弹簧安全错误不起作用
【发布时间】:2012-04-20 17:42:52
【问题描述】:

问题一:

我已经在我的应用程序中设置了 Spring Security,但现在我遇到了一个奇怪的问题。 我从 spring security 中学到的是,如果你设置了这个,你不需要在你的方法上方添加这行代码 @RolesAllowed({"ROLE_ADMIN"})

<sec:http auto-config="true" access-denied-page="/faces/accessDenied.xhtml">
    <sec:form-login login-page="/faces/login.xhtml" />
    <sec:intercept-url pattern="/faces/admin/**" access="ROLE_ADMIN" />
</sec:http>

但显然我可以转到“/faces/admin”文件夹中的页面,而无需 Spring Security 将我重定向到登录页面。

问题 2:

当我在我的方法上方有@RolesAllowed({"ROLE_ADMIN"}) 代码时,它会将我重定向到登录页面并正常工作,但是使用这个,我在控制台中收到拒绝访问错误,并带有一堆错误代码(尽管应用程序仍然正常运行) .我可以在控制台中收到拒绝访问错误吗?如果不是,最好的处理方法是什么?

我仍然想要受限页面文件夹,并且不必在管理文件夹中的所有方法之上写@RolesAllowed

PS:这是一个 JSF 2.0 项目。

提前感谢,干杯。

【问题讨论】:

    标签: java jsf-2 spring-security


    【解决方案1】:

    问题 1:我认为您的 web.xml 中缺少 DelegatingFilterProxy。像这样配置:

    <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>
    

    并配置http元素如下:

    <http auto-config="true" >
       <intercept-url pattern="/faces/login.xhtml*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
       <intercept-url pattern="/faces/admin/**" access="ROLE_ADMIN" />
       <access-denied-handler error-page="/faces/accessDenied.xhtml" />
       <form-login login-page='/faces/login.xhtml' default-target-url='/faces/index.xhtml'
            always-use-default-target='true'/>
    </http>
    

    并且使用 access-denied-handler 代替 access-denied-page 属性,因为上述属性已被弃用。Source

    问题 2:是的,如果您将日志级别设置为 DEBUG 并首次以匿名用户身份访问受保护的资源,这是正常的。见 1.3 这个FAQ

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2019-04-27
      • 2015-06-06
      • 2017-09-25
      • 2018-10-31
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多