如何解决春季安全性:拒绝访问的处理程序不起作用XML配置+控制器方法上的预授权注释
拒绝访问处理程序不起作用。 spring配置在许多xml文件中被分割
- 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')"/>
)效果很好,但是当我使用Preauthorize注释时却没有效果!
- [app] -servlet.xml
...
<security:global-method-security pre-post-annotations="enabled"/>
...
- 控制器
....
@RequestMapping(value="/adminarea.htm")
@PreAuthorize("hasAuthority('ADMIN_AREA')")
protected ModelAndView referenceData() throws Exception
{....}
....
提前谢谢大家:)
解决方法
调查之后,我找到了解决问题的方法:
- 创建带有@ControllerAdvice注释的自定义访问拒绝处理程序类
- 必须重要的一点是为具有优先级的注释组件(例如@Order(value = 1))定义排序顺序
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。