java jax-rs拦截器_rest – 使用拦截器和注入在JAX-RS中进行身份验证/授权

在我看来,只要您不尝试使用此用户对象构建类似会话的内容,此方法就是有效的.

作为answered here你可以使用@Context和@Provider,但这不完全是你想要的.

使用Resteasy Dispatcher可以直接为每个@Context注入一个类.

但是在这里你必须注册应该注入的Object.我认为这对请求范围的参数没有意义.

您可以做的是注入这样的提供者:

// Constructor of your JAX-RS Application

public RestApplication(@Context Dispatcher dispatcher) {

dispatcher.getDefaultContextObjects().put(UserProvider.class,new UserProvider());

}

// a resource

public Response getById(@Context UserProvider userProvider) {

User user = userProvider.get();

}

解决问题的其他方法:

>注册WebFilter,验证用户,包装ServletRequest并覆盖getUserPrincipal.然后,您可以从注入的HttpServletRequest访问UserPrincipal.

>实现一个实现ContainerRequestFilter的JAX-RS拦截器.将ContainerRequestContext.html#setSecurityContext与UserPrincipal一起使用,并将SecurityContext注入ResourceMethod-Parameter.

>实现更新Method-Parameters的CDI-Interceptor.

>为您的用户实现一个类which produces并通过CDI注入它.

我把例子推到了github.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值