spring boot从AuthorizationFilter中获取ServletRequest中的控制器类

时间:2018-03-09 13:32:01

标签: java spring spring-boot servlet-filters

Heee那里,

现在我完全卡住了。我花了几个小时询问谷歌,但我还没有找到任何解决方案或方法。也许你们可以帮助我。

一些背景信息:

我正在将微服务开发到现有的微服务基础架构中。我想使用spring boot并将服务连接到我们现有的身份验证服务。还有很多其他jax rs微服务已经连接到它。我开始使用身份验证和授权过滤器。身份验证过滤器运行良好。

问题:

我想用自己的"安全"注释就像在其他服务中一样。 因此,控制器中有一些带注释的资源方法,如下例所示:

    @Secured({Role.ADMIN,...})
    @RequestMapping(value = "/interfaces", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<ExportInvoiceInterfaceResponseRepListWrapper> getAll() {
       ...
    } 

所以当下面的过滤器被触发时,我想读取带注释的控制器方法的角色。在jax rs中我只使用了Class ResourceInfo来实现。您可能知道我无法在默认的Spring启动设置中使用此类。有没有办法让课程&#34;弹簧启动方式&#34;?

    public class AuthorizationFilter extends GenericFilterBean {
    @Context
    private ResourceInfo resourceInfo;

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        // Get the resource class which matches with the requested URL
        // Extract the roles declared by it
        Class<?> resourceClass = resourceInfo.getResourceClass();
        List<Role> classRoles = extractRoles(resourceClass);
...

}

任何帮助都会很棒。先谢谢你。

干杯 弗兰克

0 个答案:

没有答案