Method
HttpServletRequest
WebSecurityConfig
注释而不是路径应用@Secured
?我有一个使用@Secured
注释的Spring MVC服务器来指定每个控制器方法所需的角色 - 它们不容易映射到路径模式。
通过特定的身份验证方法授予某些角色(例如x509,基本域A,基本域B,承载令牌)。
当调用者未经过身份验证时,WWW-Authenticate标头不应该建议不授予该方法所需角色的内容。
我认为最简单的方法是使用所有可能的身份验证方法配置HttpSecurity,并permitAll()
将所有检查委派给方法安全性。但是,当失败时,我只能为链定义一个AuthenticationEntryPoint
。
因此,我需要实现一个AuthenticationEntryPoint
,其行为取决于所需的角色,但我一直无法找到在commence
方法中获取该信息的方法 - 似乎没有方法或详细说明映射的Method
(我可以从中检查注释)或所需角色(在request
对象或InsufficientAuthenticationException
中)的属性。
出于同样的原因,DelegatingAuthenticationEntryPoint
不会工作,因为我无法在RequestMatcher
中获得这些内容。
是否有漂浮的豆子可以让我轻松掌握这些信息?
我是否在正确的轨道上解决问题?
答案 0 :(得分:0)
如何从HttpServletRequest获取映射的方法
Method method = ((HandlerMethod) ((ApplicationContext) request
.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE))
.getBean("requestMappingHandlerMapping", HandlerMapping.class)
.getHandler(request)
.getHandler())
.getMethod();
getMethodAnnotation(Class)
上还有一个HandlerMethod
可以跳过一步。
从那里,您可以获得@Secured
注释的详细信息,并找出所需的角色。