繁体   English   中英

Spring 安全性:拒绝访问处理程序不起作用(xml 配置 + 控制器方法上的预授权注释)

[英]Spring security : Access denied handler doesn't work (xml config + preauthorize annotation on controller method)

拒绝访问处理程序不起作用。 spring 配置被拆分成许多 xml 文件

  1. applicationContext-spring-security.xml
<http auto-config='false" use-expressions="true" entry-point-ref="loginUrlAuthenticationEntryPoint" >
    <access-denied-handler error-page='/accessdenied.htm" />
    <intercept-url pattern="/login.htm" access="permitAll"/>
    <intercept-url pattern='/editprocedure.htm" access="hasAuthority('CAPABILITY_ADD')"/>
</http>

access-denied-handler 适用于 xml 配置(如<intercept-url pattern="/addjob.htm" access="hasAuthority('JOB_ADD')"/> ),但是当我使用预授权注释时它不会!

  1. [应用]-servlet.xml
...
<security:global-method-security pre-post-annotations="enabled"/>
...
  1. 控制器
....
    @RequestMapping(value="/adminarea.htm")
    @PreAuthorize("hasAuthority('ADMIN_AREA')")
    protected ModelAndView referenceData() throws Exception
    {....}
....

谢谢大家 :)

经过调查,我找到了解决我的问题的方法:

  1. 创建使用 @ControllerAdvice 注释的自定义访问拒绝处理程序类
  2. 必须重要的是为我们的注释组件定义高优先级的排序顺序(例如@Order(value = 1))

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM