Spring security 使用Spring Security Filter链以编程方式从应用程序内部验证用户授权

Spring security 使用Spring Security Filter链以编程方式从应用程序内部验证用户授权,spring-security,spring-hateoas,Spring Security,Spring Hateoas,我目前正在用SpringBoot1.4.2.RELEASE和SpringSecurity4.1.3.RELEASE开发一个应用程序。应用程序具有Rest控制器,并接收和响应json消息。此应用程序将与角度应用程序通信。 我已经对以下配置进行了身份验证和授权: http.authorizeRequests() .antMatchers(HttpMethod.POST, "/foo/bar/**") .access("(hasRole('OPERATOR') &&am

我目前正在用SpringBoot1.4.2.RELEASE和SpringSecurity4.1.3.RELEASE开发一个应用程序。应用程序具有Rest控制器,并接收和响应json消息。此应用程序将与角度应用程序通信。 我已经对以下配置进行了身份验证和授权:

http.authorizeRequests()
    .antMatchers(HttpMethod.POST, "/foo/bar/**")
        .access("(hasRole('OPERATOR') && hasRole('MAKER')) || hasRole('ADMIN')")
    .anyRequest().authenticated()
    .and()
    .httpBasic();
以及RESTController方法中的规则,如:

@PreAuthorize("hasRole(#id) || hasRole('ADMIN')")
所有这些工作都没有问题,现在我添加了Spring Hateoas。 我知道Hateoas与用户对资源的授权无关,但我希望能够向angular应用程序发送附加信息。不仅仅是资源的链接,还有用户可以访问的操作(http动词)

我不想这样做是为了提高应用程序的安全性,只是为了改善用户体验。在Angular应用程序中,我希望能够根据服务器发送的内容激活或停用功能

所以我的问题来了,在SpringSecurity中是否有任何可用的类可以自动连接以测试URL,并查看用户是否有权对该特定URL执行特定操作


到目前为止,我测试过的Spring安全文档中提到的所有类都不能被@Autowire注释识别

有趣的问题,看看它是否适合你的需要

isAllowed(String contextPath, String uri, String method, Authentication authentication)

例如,您可以在操作中看到它。

不确定我是否正确理解您的意思,您不是在寻找
SecurityContextHolder.getContext().getAuthentication()
?@user1315357我知道这个方法,通过它我可以获得用户配置文件。但是为了知道用户是否可以执行例如POST,我需要编写一个逻辑,该逻辑不使用我在antMatcher中声明的规则,如问题中所述。出于某种原因,WebInvocationPrivilegeEvaluator没有使用@PreAuthorize声明的规则。也许是个虫子,我不确定。我将创建一个示例项目来重新创建问题,如果我认为是一个bug,我将在GitHub上发布它。请共享您的原型。我在GitHub中打开了一个问题:。在问题的描述中,您可以找到指向演示问题的示例项目的链接。