匿名和授权用户的Spring @RestController单一方法

蝶形

我有以下Spring RestController:

@RestController
@RequestMapping("/v1.0/tenants")
public class TenantController {

    @Autowired
    private TenantService tenantService;

    @RequestMapping(value = "/{tenantId}", method = RequestMethod.GET)
    public TenantResponse findTenantById(@PathVariable @NotNull @DecimalMin("0") Long tenantId) {
        Tenant tenant = tenantService.findTenantById(tenantId);
        return new TenantResponse(tenant);
    }

}

findTenantById该方法应由匿名和授权用户访问。如果是匿名用户,则SecurityContextHolder.getContext().getAuthentication()必须返回NULL,AnonymousAuthenticationToken但如果是授权用户,则必须返回-身份验证对象。

在我的应用程序中,我已经使用OAuth2 + JWT令牌实现了安全模型。

这是我的配置:

    @Override
    public void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http                
            .antMatcher("/v1.0/**").authorizeRequests()
            .antMatchers("/v1.0/tenants/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(STATELESS); 
        // @formatter:on
    }

另外,对于安全的端点,我@PreAuthorize在需要的地方应用注释,但不是在这种情况下,findTenantById因为如前所述,我需要为匿名和授权用户授予对此端点的访问权限。在端点业务逻辑中,我将根据不同的情况决定谁将能够继续进行。

现在,即使我已accessToken为此端点提供了我,也无法从获得身份验证的User对象SecurityContextHolder.getContext().getAuthentication()

如何配置此端点才能以上述方式工作?

蝶形

我想我已经找到了解决方案-我用以下方法注释了我的方法:

@PreAuthorize("isAnonymous() or isFullyAuthenticated()")

请让我知道是否有更好的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单一方法中的多个等待

来自分类Dev

使用遮罩合并图像的单一方法

来自分类Dev

单一方法中的多个等待

来自分类Dev

单一方法类与接口实现

来自分类Dev

Spring AOP:无法将方法解析为唯一方法

来自分类Dev

异步和等待-处理对同一方法的多次调用-互相锁定/等待吗?

来自分类Dev

是否可以在同一方法中同时使用GET和POST?

来自分类Dev

子对象和父对象被传递到同一方法

来自分类Dev

吸气剂和塞脂剂是避免原型变异的唯一方法吗?

来自分类Dev

是否可以在同一方法中同时使用GET和POST?

来自分类Dev

UIActivityIndicator在同一方法中启动和停止

来自分类Dev

C ++-在同一方法中获取和设置成员变量?

来自分类Dev

上下文菜单和键盘快捷键在同一方法上返回不同的结果

来自分类Dev

在ASP.Net MVC中以单一方法返回视图和文件

来自分类Dev

如何使用linq在单一方法中使聚合函数?

来自分类Dev

使用单一方法返回不同类型的数据

来自分类Dev

如何以单一方法返回int日期,月份,年份

来自分类Dev

Angular.js中Ajax单一方法的体系结构

来自分类Dev

使用哪种单一方法检查:空白?&& !错误的?

来自分类Dev

使用单一方法检测按钮阵列上的点击

来自分类Dev

运行时反射-使用单一方法提取符号

来自分类Dev

单一方法可产生多个新的Scanner返回

来自分类Dev

通过单一方法但使用多个查询的数据库连接

来自分类Dev

使用单一方法从多个输入字段计算年龄

来自分类Dev

maven-surefire-plugin 运行单一方法,但在课堂上失败

来自分类Dev

方法和用户的Restlet授权

来自分类Dev

即使在同一方法调用中同时验证Times.Once()和Times.Never()时,Moq测试仍通过

来自分类Dev

defprotocol“没有单一方法”错误似乎是莱宁根的一个错误

来自分类Dev

如何通过单一方法从不同索引中删除数组中的元素?

Related 相关文章

  1. 1

    单一方法中的多个等待

  2. 2

    使用遮罩合并图像的单一方法

  3. 3

    单一方法中的多个等待

  4. 4

    单一方法类与接口实现

  5. 5

    Spring AOP:无法将方法解析为唯一方法

  6. 6

    异步和等待-处理对同一方法的多次调用-互相锁定/等待吗?

  7. 7

    是否可以在同一方法中同时使用GET和POST?

  8. 8

    子对象和父对象被传递到同一方法

  9. 9

    吸气剂和塞脂剂是避免原型变异的唯一方法吗?

  10. 10

    是否可以在同一方法中同时使用GET和POST?

  11. 11

    UIActivityIndicator在同一方法中启动和停止

  12. 12

    C ++-在同一方法中获取和设置成员变量?

  13. 13

    上下文菜单和键盘快捷键在同一方法上返回不同的结果

  14. 14

    在ASP.Net MVC中以单一方法返回视图和文件

  15. 15

    如何使用linq在单一方法中使聚合函数?

  16. 16

    使用单一方法返回不同类型的数据

  17. 17

    如何以单一方法返回int日期,月份,年份

  18. 18

    Angular.js中Ajax单一方法的体系结构

  19. 19

    使用哪种单一方法检查:空白?&& !错误的?

  20. 20

    使用单一方法检测按钮阵列上的点击

  21. 21

    运行时反射-使用单一方法提取符号

  22. 22

    单一方法可产生多个新的Scanner返回

  23. 23

    通过单一方法但使用多个查询的数据库连接

  24. 24

    使用单一方法从多个输入字段计算年龄

  25. 25

    maven-surefire-plugin 运行单一方法,但在课堂上失败

  26. 26

    方法和用户的Restlet授权

  27. 27

    即使在同一方法调用中同时验证Times.Once()和Times.Never()时,Moq测试仍通过

  28. 28

    defprotocol“没有单一方法”错误似乎是莱宁根的一个错误

  29. 29

    如何通过单一方法从不同索引中删除数组中的元素?

热门标签

归档