首页 文章

使用 javaconfig 访问拒绝 Spring Security

提问于
浏览
0

我希望你能帮我一臂之力:

我正在使用 spring security 和 spring MVC 来构建一个 Web 应用程序,一旦尝试访问禁用资源(403 HTTP 状态代码),我需要将流重定向到登录页面。

现在,Spring Security 已经开始着手防止未经授权访问我在 Restful API(@RestController)中公开的每个资源,并使用正确的 403 默认页面进行响应。但是当我需要重定向到登录页面时,我需要推送 spring 安全性来进行重定向而不是发送 403.在这方面我一直在尝试执行以下操作但是我无法使其工作:

  • 设置 HttpSecurity bean 以在访问被拒绝的页面时管理异常:

_1_protected void configure(HttpSecurity http)抛出异常{http.csrf().disable().exceptionHandling().accessDeniedPage(“/security/403”); }

  • 现在,我将控制器设置为捕获/security/403 URL

// for 403 access denied page @RequestMapping(value =“/security/403”,method = RequestMethod.GET)public void accesssDenied() {//Do stuff here,重定向等等。 }

谢谢

1 回答

  • 2

    创建一个充当Interceptor的新类。

    该类将实现HandlerInterceptor接口并覆盖以下方法:

    来自文件

    • preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - 拦截处理程序的执行(在控制器之前调用)。

    • postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) - 在控制器后立即调用

    • afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler) - 在发送对视图的响应之前调用

    在您的情况下,使用preHandle()方法检查客户端是否正在尝试访问禁用资源,如果是,请将客户端重定向到登录页面。实际上,这是使用 Interceptor 处理执行流程的最常见范例之一。

相关问题