首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Spring中的MultipartResolver之前调用拦截器

无法在Spring中的MultipartResolver之前调用拦截器
EN

Stack Overflow用户
提问于 2012-05-18 20:06:14
回答 2查看 789关注 0票数 0

在我的spring-3应用程序中,我有一个AuthenticationInterceptor (基本上是一个拦截器),它检查用户的特权。我正在使用Spring的MultipartResolver来尝试将文件上传到服务器。我现在面临的问题是,在MaxUploadSizeExceededException的情况下,我希望根据用户权限执行不同的操作。但是,我发现这个异常发生在DispatcherServlet级别,并且被HandlerExceptionResolver捕获。我希望能够在这种情况发生之前调用我的AuthenticationInterceptor吗?有没有一种简单的方法。

EN

回答 2

Stack Overflow用户

发布于 2012-05-19 05:29:03

问题是,异常发生在请求被分派到控制器之前,因此,您的拦截器也不会触发。我想你已经弄明白了这一点。

想要绕过那个..。

对于初学者,我将使用servlet过滤器将身份验证机制移到servlet前面。这就是说,当Spring Security这样的伟大产品可以为你做到这一点时,在这个领域推出你自己的解决方案几乎没有意义。

一旦您转换到Spring Security (或类似的),用户的SecurityContext (角色、权限等)将在异常发生并被捕获时得到解决。

您将实现一个自定义HandlerExceptionResolver,它检查SecurityContext以查看用户是否具有特定的角色或权限,然后做出相应的响应。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2012-05-20 23:21:58

在调用Handler代码之前,有两种基本的方法来处理流中的操作:

  1. 实现HandlerInterceptor接口,并编写您想要在preHandle方法中运行的代码
  2. 使用@Aspect创建一个方面,并配置一个切入点来运行@Before方法调用

<代码>G29

在这两种情况下,您都可以使用SecurityContextHolder.getContext().getAuthentication().getAuthorities()检查登录用户的角色,然后根据角色成员身份决定要做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10652344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档