我正在尝试实现用于授权/认证的quarkus扩展。我以现有的quarkus-smallrye-jwt-abx
扩展名为例。一切似乎都正常,除了我无法注入Principal
:
@Inject
private Principal principal;
我要
对类型java.security.Principal和限定符[@Default]的不满意的依赖关系
注入SecurityContext
并从其中获取Principal
可以正常工作:
@Context
private SecurityContext sec;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("test")
public String test() {
return sec.getUserPrincipal().getName();
}
在quarkus-smallrye-jwt-abx
扩展名中,有一个PrincipalProducer
,似乎产生了Principal
。这真的有必要吗?不是由安全子系统本身提供的吗?它还提供SecurityContext
,为什么不提供Principal
?
谢谢!
答案 0 :(得分:0)
这是当前resteasy / CDI集成中的错误,因为我们没有提供基于JAX-RS SecurityContext的默认设置。 quarkus-smallrye-jwt扩展提供了一个PrincipalProducer来覆盖默认值,因为它安装的是Principal,它是java.security.Principal的子接口。当前的解决方法是提供您自己的主要制作人。
答案 1 :(得分:-1)
请检查您的Android清单,这通常意味着您正在使用未声明的服务。
转到清单并添加
<uses android-permission = "Read External storage..... />
希望解决编码问题的人