问题描述
遵循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 (将#修改为@)