2011-06-19 9 views
1

私はPlay Frameworkを使ってWebサービスを開発しています。私の次のステップは、モジュールsecureを使用してログインすることです。しかし、イムは、次のようにNullPointer例外を取得:Play Framework:POSTを使用してログインする方法

play.exceptions.JavaExecutionException 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:227) 
at Invocation.HTTP Request(Play!) 
Caused by: java.lang.NullPointerException 
at play.utils.Java.invokeStaticOrParent(Java.java:146) 
at controllers.Secure$Security.invoke(Secure.java:193) 
at controllers.Secure$Security.access$0(Secure.java:184) 
at controllers.Secure.authenticate(Secure.java:61) 
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:498) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:474) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:469) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:157) 
... 1 more 

Playframework Secure module: how do you "log in" to test a secured controller in a FunctionalTest?によると、それは私もテストしていると、それはテストケースには完璧に動作/ログインにポストを行うことが可能です。

がnullpointer例外は次の操作を行い再作成するには:

  1. リスト項目
  2. がインストール
  3. が依存
  4. として、セキュアモジュールを追加し、新規プロジェクトを作成し、依存関係「遊びの依存関係」
  5. Webアプリケーションを再起動します。
  6. 投稿を/ loginに送信します。 2つのリクエストヘッダー(ユーザー名とパスワード)を追加しましたが、例外はヘッダーの有無に関係なく発生します。ポストは(私の場合)REST Client for Firefoxを使って送信されます。

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

+0

コントローラメソッドとルートを共有できますか? – lobster1234

+0

あなたのルートとアプリケーションコードを共有できますか? – Varundroid

答えて

1

ユーザー名またはパスワードがnullのようです。あなたはログインアクションをポストしているので、エンコードされたリクエスト本体の一部としてユーザー名とパスワードを送信する必要がありますが、あなたが何か別のことをしているように聞こえるかもしれません(または、リクエストヘッダーを追加することによって何を意味するのか誤解しました)。

これはSecureモジュールのバグだと思いますが、このケースはやや上手く処理する必要があると思います。 NullPointerExceptionが発生する理由は、invokeStaticOrParentが呼び出すメソッドを特定するために引数の型を決定する必要があり、nullの引数の場合にはgetClass()を呼び出すときに例外がスローされるためです。それが今ないよう

は、セキュアモジュール内の認証アクションは、おそらく後@Requiredとパスワードパラメータをマークし、基礎となるauthentify/authenticateメソッドを呼び出そうと前validation.hasErrors()に対するチェックを実行し、代わりにすべきです。

実際にはこれに関連するexisting ticketもありますが、どのような進歩があったのか分かりません。私は後で、これに対処するコミットメントが残っているかどうかを確認し、そうでない場合は、パッチの提出について何ができるかを見ていきます。

+0

あなたは正しいです。あなたは私を誤解していませんでした。私は間違った方法でユーザー名とパスワードを追加しました。 – user521048

関連する問題