0

ユーザー情報を使用してユーザー オブジェクトを作成する方法は 2 つあります。

1) 明示的なコンストラクター -Application.getUserInfo() メソッドを呼び出します。対応するビューには、ユーザーがサインアップ情報 (名前、ユーザー、パスワード) を入力するためのフォームがあり、Application.createUser(String name, String email, String password)次に明示的なコンストラクターを呼び出しますnew User(name, email, password)。送信ボタンをクリックすると、Application.createUser()メソッドが呼び出されます。

2) メソッドを呼び出した場合Application.getUserInfo(User user)、対応するビューには (暗黙のデフォルト コンストラクターによって作成された) ユーザー オブジェクトがありますか? その場合、user.name、user.email、user.password を読み取ることができます。この方法では、明示的なコンストラクターを定義する必要はありません。

アプローチ2)が有効かどうか教えてもらえますか?はいの場合、1) と比較して欠点はありますか?

4

2 に答える 2

2

どちらのアプローチも有効ですが、アプローチ2はセキュリティ上の問題になる可能性があります。

アプローチ#2では、バインドできないプロパティ(@NoBindingアノテーションを使用したブラックリスト)を指定する必要がありますが、アプローチ#1では、バインドするデータ(ホワイトリスト)を明示的に指定します。

従来の安全なソフトウェアシステムは、ホワイトリストを中心に構築する必要があります...すべてのファイアウォールは、「指定したものを除くすべてをブロックする」ように機能します...

アプリが単なるイントラネットアプリである場合は、アプローチ#2を使用しても問題ありません。実際のアプリが数千人のユーザーに対応している場合、私は(個人的に)アプローチ#1を使用します。

于 2012-05-29T10:15:11.347 に答える
1

アプローチ 2 は有効であり、非常に一般的なアプローチです。http://www.playframework.org/documentation/1.2.4/controllers#bindingを見て、詳細については POJO バインディングを参照してください。

唯一の欠点は、モデルの構造が、HTML を読むことができる人々に公開され、POJO バインディングを使用していることを知っていて、そこから解決できることです...しかし、それが本当に重要かどうかはわかりません。

于 2012-05-29T06:32:29.850 に答える