控制台和受限文件夹中的spring安全性错误无效

时间:2012-04-20 17:42:53

标签: java jsf-2 spring-security

问题1:

我已经在我的应用程序中设置了弹簧安全性,但现在我有一个奇怪的问题。 我从Spring安全性中学到的是,如果你设置它,你不需要在你的方法上面添加这行代码@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>

但显然我可以转到&#34; / faces / admin&#34;中的页面。没有spring security的文件夹会将我重定向到登录页面。

问题2:

当我的方法上面有@RolesAllowed({"ROLE_ADMIN"})代码时,它会将我重定向到登录页面并且正常工作但是使用这个代码,我的控制台中出现了访问被拒绝错误,错误代码很多(应用程序仍能正常运行)虽然)。是否可以在控制台中获得访问被拒绝的错误,或者如果不是最好的处理方式是什么?

我仍然希望拥有受限制的页面文件夹,而不必在管理文件夹中的所有方法上面写@RolesAllowed

PS:它是一个JSF 2.0项目。

提前感谢,欢呼。

1 个答案:

答案 0 :(得分:0)

问题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-page属性,请使用access-denied-handler,因为不推荐使用上述属性。Source

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

的1.3