如果作为参数注入,则在SecurityContext上出现Quarkus 1.7.2 security-jpa NullPointerException

问题描述

遵循https://quarkus.io/guides/security-jpa指南。

在控制器中作为参数传递时,我无法获得@Context SecurityContext。

构建成功,SecurityContext上的NullPointerException仅在击中端点且凭据有效时发生。

但是当我在上面声明时,它起作用了。不再为null。这是一个错误吗?还是对我错过的事情有解释?

@RestController
@RequestMapping(value = "security",produces = MediaType.APPLICATION_JSON,consumes = {
    MediaType.APPLICATION_JSON })
public class SecurityDemoController {
  
  
  @GetMapping("/public")
  public String publicPath() {
      return "hello public";
  }

  @Secured("admin")
  @GetMapping("/admin")
  public String adminPath() {
      return "hello admin";
  }


  // worked this way
  @Context
  private SecurityContext sec;


  // did not work when passing it as parameter,was emitting a NullPointerException
  @Secured("user")
  @GetMapping("/me")
  public String me(
  //   @Context
  // SecurityContext securityContext
  ) {
    SecurityContext scheme = sec;
    System.out.println(scheme);
    Principal principal = sec.getUserPrincipal();
    return "hello " + principal.getName();
  }

}

您可以看到我正在使用quarkus spring-web和spring-security扩展,但我认为这不会引起此类问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)