2013-06-17 9 views
13

jersey 1.11フィルタの残りの呼び出しに対してユーザー認証を実装しようとしています。jersey 1.11フィルタでカスタムレスポンスとアボート要求を追加する方法

これは私が誰もが同じことを達成するための任意の方法または何かを知ってい

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; 
    } 

} 

を試してみましたが、何ですか?

答えて

35

エラーの場合、カスタム応答を送信する場合は、WebApplicationExceptionをスローする必要があります。このお試しください

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

::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; 
} 
+0

おかげで、:-)それは確認のために、感謝を働い – Ankur

+0

@Ankurイム嬉しい魅力のように働きました –

+0

@JunedAhsan答えをくれてありがとう。 Jersey 2.Xのドキュメントは1.Xよりも優れていて、あなたの応答を見るまで、この部分はあまり明確ではありませんでした。 –

関連する問題