3

私は現在、appengineでopenidを介したフェデレーション認証を使用しています-プロバイダーとしてgoogle、yahoo、myopenidを使用しています

リピーターを特定するためにデータベースに何を保存する必要があるかについて質問がありました。私は現在user.getNickname()を保存しています-(googleとyahooの場合、これはユーザーのメールアドレスを返します)。

User user = userService.getCurrentUser();
String username = user.getNickname();

これを使用して、ユーザー固有のデータを保存および取得します。

これは続行する正しい方法ですか?getNickName()は一意ですか?Userにもuser.getUserId()メソッドとuser.getEmailId()メソッドがあることがわかります。

代わりにuser.getUserId()を使用する必要がありますか?

4

1 に答える 1

4
  1. getNickname()-これは使用しないでください。

  2. getUserId()-これは論理的ですが、ユーザーがサイトで使用したIDを忘れた場合に問題が発生する可能性があります(私はgoogleに複数のアカウントを持っており、さらにyahooとfacebookもあります)。これにより、1人に複数のアカウントが作成される可能性があります。しかし、その後、一部の人々はこれを望んでいます。また、Googleユーザーがメールを変更しても、これは同じです。

  3. 'getEmail()`-実際にはIDに似ています-ユーザーを一意に識別します。ユーザーがエイリアス電子メールを使用してログインする場合は、IDとは異なる可能性があります。

とにかく、ユーザーが初めてログインするときは、アカウントの詳細ページを表示する必要があります(SOのように)。また、ユーザーがIDを1つのアカウントに集約できるようにする必要があります。

于 2011-03-06T19:28:16.463 に答える