【问题标题】:How to add custom response and abort request in jersey 1.11 filters如何在 jersey 1.11 过滤器中添加自定义响应和中止请求
【发布时间】:2013-06-13 04:05:29
【问题描述】:

我正在尝试在 jersey 1.11 过滤器中为 rest 调用实现用户身份验证。

这是我尝试过的

package com.ilrn.session.webservices.rest.filter;

import com.ilrn.entity.User;;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;

public class CustomFilter implements ContainerRequestFilter{

    @Override
    public ContainerRequest filter(ContainerRequest request) {
        User user = Helper.getCurrentUser();
        if(user == null){
            //Need to add custom response and abort request
        }
        return request;
    }

}

有没有人知道任何方法或东西可以达到同样的效果?

【问题讨论】:

    标签: java jersey servlet-filters


    【解决方案1】:

    如果发生错误,如果要发送自定义响应,则需要抛出 WebApplicationException。创建一个 Response 对象并使用以下异常构造函数将其发回:

    WebApplicationException(Response response) 
              Construct a new instance using the supplied response
    

    试试这个:

    @Override
    public ContainerRequest filter(ContainerRequest request) {
        User user = Helper.getCurrentUser();
        if(user == null){
            ResponseBuilder builder = null;
            String response = "Custom message";
            builder = Response.status(Response.Status.UNAUTHORIZED).entity(response);
            throw new WebApplicationException(builder.build());
    
        }
        return request;
    }
    

    【讨论】:

    • @JunedAhsan 感谢您提供答案。 Jersey 2.X 的文档比 1.X 好,这部分不是很清楚,直到我看到你的回复。
    • @AkshayaAradhya Jersey 自成立以来在代码和文档方面都有很大改进。但我喜欢这个框架,因为 jersey 是我用于 RESTful 服务的第一个框架,它让我的生活变得更简单。
    • @JunedAhsan 请让我知道是否有办法在上面显示的示例中返回 ok 响应。
    • @AkshayaAradhya 过滤器旨在修改请求。所以通常你不需要通过抛出异常来中止请求。只需返回原始请求。如果您仍想以 ok 响应中止,只需将“Response.Status.UNAUTHORIZED”替换为 Response.Status.ok。
    • @TheoBriscoe 是否可以在不抛出异常的情况下返回请求。我想返回一个好的响应。在不需要异常的情况下抛出异常似乎是错误的。
    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2021-06-09
    • 2016-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多