Resteasy 3.X PreProcessInterceptorの適切な交換は何ですか?

ジルベルトトレザン:

このチュートリアルで説明されているように、認証/承認メカニズムを使用してRESTサービスを構築しています:http : //howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/

基本的には、PreProcessInterceptorインターフェースを使用して、ターゲットメソッドをスキャンし(javax.annotation.securityパッケージから)、そのメソッドにアクセスするために必要な役割を記述します。ここでのオーセンティケーターはインターセプターであるため、必要に応じて401(無許可)を返し、ターゲットメソッドの呼び出しをキャンセルできます。

ここでの問題は、org.jboss.resteasy.spi.interception.PreProcessInterceptorインターフェースが現在のRestEasyバージョン(3.0.1)で非推奨になっていて、標準のJAX-RSインターフェースで同じ動作を実装しようとすると問題が発生することです。

javax.ws.rs.ext.ReaderInterceptorインターフェースを使用して、呼び出しをインターセプトしています。しかし、どういうわけかサーバーは決してそれを呼び出さない:インターセプターは単に無視される。

以前のPreProcessInterceptorで行ったのと同じ方法でインターセプター/リソースを登録し、同じ@Providerおよび@ServerInterceptorアノテーションを使用しています。

ServerApplication:

public class ServerApplication extends javax.ws.rs.core.Application {

     private final HashSet<Object> singletons = new LinkedHashSet<Object>();

     public ServerApplication() {
         singletons.add(new SecurityInterceptor());
         singletons.add( ... ); //add each of my rest resources
     }

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>();
        return set;
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

SecurityInterceptor:

@Provider
@ServerInterceptor
public class SecurityInterceptor implements javax.ws.rs.ext.ReaderInterceptor {
     @Override
     public Object aroundReadFrom(ReaderInterceptorContext context){
            //code that is never called... so lonely here...
     }
}

この問題を解決するにはどうすればよいですか?

ありがとうございました。

カルロペレグリーニ:

RESTEasy 3.xxはJAX-RS 2.0仕様に準拠しています。

あなたがやろうとしていることは、(おそらくより良い)次のことで達成できます:

@Provider
public class SecurityInterceptor 
      implements javax.ws.rs.container.ContainerRequestFilter {
     @Override
     public void filter(ContainerRequestContext requestContext){
       if (not_authenticated){ requestContext.abortWith(response)};
     }
}

ReaderInterceptorは、基盤MessageBodyReader.readFromがアプリケーションコードからではなく、標準のJAX-RSパイプラインによって呼び出された場合にのみ呼び出されるためです。

ただし、インターセプターが呼び出されない理由@ServerInterceptorは、RESTEasy拡張であるアノテーションにある可能性があります。

仕様は、6.5.2で、インターセプターがアノテーションで@Provider注釈されていない限りグローバルに登録されていると述べていますが、ResEASYインターセプターが呼び出されていないように明示的に登録されていない場合に処理できる@NameBindingかどうかはわかりませんRESTEasy@ServerInterceptor

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

RESTEasy3.xを使用したデフォルトのJSON時間形式の変更

分類Dev

方程式(y '=(3 * x ^ 3-y)/(3 * x))がプロット関数で適切に置き換えられないのはなぜですか?

分類Dev

RESTeasyとX-HTTP-Method-Override

分類Dev

`{'x' => 3}`と `{x:3}`の違いは何ですか?

分類Dev

Resteasyでリクエストを検証する適切な方法は何ですか?

分類Dev

Resteasyでリクエストを検証する適切な方法は何ですか?

分類Dev

RestEasy 4.5.xにアップグレードした後のStackOverflowError

分類Dev

python3。<x>とpython3。<x> mの違いは何ですか

分類Dev

TomcatでのRESTeasyの使用

分類Dev

MyBatis3のLessThan / Equal演算子の適切な構文は何ですか?

分類Dev

Matlabで3Dスカラー場をプロットするとき、なぜ軸XがYと交換するのですか?

分類Dev

RESTEasyとの春の統合

分類Dev

Resteasy 3.09 CorsFilterの問題

分類Dev

RESTEasyのNettyのバージョンは何ですか?

分類Dev

3.xカーネルでのdaemonize()kernalapiの置き換えは何ですか

分類Dev

Python3の `print(x)`と `print(* x)`の違いは何ですか?

分類Dev

.flacファイルを320kBit / sec .mp3に変換する適切な方法は何ですか?

分類Dev

.flacファイルを320kBit / sec .mp3に変換する適切な方法は何ですか?

分類Dev

整数の場合、なぜPython 3.xでは2 * x * xが2 *(x * x)より速いのですか?

分類Dev

値を交換するためのx、y = y、xのロジックは何ですか?

分類Dev

Resteasy3で日付をポピュラーに逆シリアル化する方法

分類Dev

Wildfly1x.xxで使用されているRESTEasyバージョンを確認するにはどうすればよいですか?

分類Dev

imputer = imputer.fit(X [:、1:3])のXは何を表しますか、imputer.fit(X [:、1:3])の意味は何ですか?

分類Dev

Python 3でx ** 4.0がx ** 4より速いのはなぜですか?

分類Dev

現在のSpringBoot2.0.0M3で動作する適切なSpringCloudリリースは何ですか

分類Dev

3.x より前の Python の適切な SQL クエリ

分類Dev

Python3.Xのclassname.attributeとself.attributeの違いは何ですか

分類Dev

X3、attr_genとは何ですか?

分類Dev

handling PreFlight requests to a security-constrained RestEasy powered rest api 2.x

Related 関連記事

  1. 1

    RESTEasy3.xを使用したデフォルトのJSON時間形式の変更

  2. 2

    方程式(y '=(3 * x ^ 3-y)/(3 * x))がプロット関数で適切に置き換えられないのはなぜですか?

  3. 3

    RESTeasyとX-HTTP-Method-Override

  4. 4

    `{'x' => 3}`と `{x:3}`の違いは何ですか?

  5. 5

    Resteasyでリクエストを検証する適切な方法は何ですか?

  6. 6

    Resteasyでリクエストを検証する適切な方法は何ですか?

  7. 7

    RestEasy 4.5.xにアップグレードした後のStackOverflowError

  8. 8

    python3。<x>とpython3。<x> mの違いは何ですか

  9. 9

    TomcatでのRESTeasyの使用

  10. 10

    MyBatis3のLessThan / Equal演算子の適切な構文は何ですか?

  11. 11

    Matlabで3Dスカラー場をプロットするとき、なぜ軸XがYと交換するのですか?

  12. 12

    RESTEasyとの春の統合

  13. 13

    Resteasy 3.09 CorsFilterの問題

  14. 14

    RESTEasyのNettyのバージョンは何ですか?

  15. 15

    3.xカーネルでのdaemonize()kernalapiの置き換えは何ですか

  16. 16

    Python3の `print(x)`と `print(* x)`の違いは何ですか?

  17. 17

    .flacファイルを320kBit / sec .mp3に変換する適切な方法は何ですか?

  18. 18

    .flacファイルを320kBit / sec .mp3に変換する適切な方法は何ですか?

  19. 19

    整数の場合、なぜPython 3.xでは2 * x * xが2 *(x * x)より速いのですか?

  20. 20

    値を交換するためのx、y = y、xのロジックは何ですか?

  21. 21

    Resteasy3で日付をポピュラーに逆シリアル化する方法

  22. 22

    Wildfly1x.xxで使用されているRESTEasyバージョンを確認するにはどうすればよいですか?

  23. 23

    imputer = imputer.fit(X [:、1:3])のXは何を表しますか、imputer.fit(X [:、1:3])の意味は何ですか?

  24. 24

    Python 3でx ** 4.0がx ** 4より速いのはなぜですか?

  25. 25

    現在のSpringBoot2.0.0M3で動作する適切なSpringCloudリリースは何ですか

  26. 26

    3.x より前の Python の適切な SQL クエリ

  27. 27

    Python3.Xのclassname.attributeとself.attributeの違いは何ですか

  28. 28

    X3、attr_genとは何ですか?

  29. 29

    handling PreFlight requests to a security-constrained RestEasy powered rest api 2.x

ホットタグ

アーカイブ