2017-09-26 19 views
2

私はリソースを確保していますが、認証を削除しても動作するようですが、セキュリティがなければ何がポイントですか?ここでセキュリティで保護されたdropwizardリソースに引数を渡す

は私のコードです:

@POST 
@Path("/secured") 
@Timed 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
@UnitOfWork 
@RolesAllowed("mainUser") 
public Response aliveSecure(@Auth User user, CustomRequest test) 
{ 
    CustomResponse resp = new CustomResponse(); 

    System.out.println(test.getMessage()); 
    return Response.status(Response.Status.ACCEPTED).entity(resp).build(); 
} 

CustomRequestとCustomResponse種類はかなり標準のPOJOている、彼らは単に「メッセージ」と呼ばれる文字列を保持する - 彼らは実際には同じですが、これは私がしようとしているだけの運動ですDropWizardを学ぶために完了すること。

ここで@Authのものと@RolesAllowedなどを削除すると、そのメソッドが安全でないものになりますが、メソッドは正常に実行されますが、これはアプリケーションの起動時に発生するエラーです。

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. 
! [[FATAL] No injection source found for a parameter of type public CustomRequest at index 0.; 

答えて

0

auth manualはそれを明確に読み込む -

あなた リソースにカスタムプリンシパルの種類を注入する@Authを使用したい場合。

したがって、あなたはすぐにそれを修正io.dropwizard.Application

@Override 
public void run(SomeConfigThatExtendsConfiguration config, Environment environment) throws Exception { 
    .... 
    environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class)); 
} 
+1

を拡張している、あなたのServiceに以下を追加確保しなければならない!!!!ありがとう!! :) – MickeyThreeSheds

+0

@MickeyThreeShedsお勧めします。 :) – nullpointer

関連する問題