2017-09-06 2 views
0

私はJPAを使い慣れていません - 私はユーザーシステムを構築し始め、エンコードBeanを私のpomに追加しました。JPA - Java Spring Boot - パスワードエンコーディングのアカウントを見つける際に問題がありますか?

私はテーブル上で電子メールアドレスだけを検索すると、ユーザーを見つけてデータを返します。

TblLogin acc = tblLoginRepository.findByEmail(email); 

このレポは次のとおりです。

public interface TblLoginRepository extends JpaRepository<TblLogin, String> { 
    TblLogin findByEmail(String email) throws Exception; 
} 

- 私は試してみて、それがユーザーを見つけることができませんエンコードされたパスワードを見上げる行う - と私は、データが正しい表示された理由としてはないと確信していますか?パスワード

TblLogin checkAccount = tblLoginRepository.findByEmailAndPassword(email,passwordEncoder.encode(password)); 

repo2

public interface TblLoginRepository extends JpaRepository<TblLogin, String> { 
    TblLogin findByEmail(String email) throws Exception; 
    TblLogin findByEmailAndPassword(String email, String password) throws Exception; 
} 

- パスワードのための私のタイプが変更されたため、

はありますか? - それは何かを確認する必要があります...

+0

正確に何をしたいですか?質問は何ですか? – Balasubramanian

+0

- ok - 私はユーザーアカウントでデータを取得しています - 私が試してログインしようとすると、パスワードエンコーディングが実際に変更されていることがわかります - 結果が見つかりません... DBに格納されているものと一致するように同じエンコード結果を得る方法 - md5(x)と同様に –

+0

エンコーディングがどのように変化していますか? PasswordEncodingをBeanとして宣言しますか?あなたは "保存"処理中にそれを使用しますか? –

答えて

0

私はあなたがそれをどのように実装したのか正確には分かりません。その機能を実装する際には、いくつかのことを確認してください。

1 - PasswordEncoder Beanを登録します - あなたは同じ文字の文字セットの中にエンコードされていることを確認し

public PassordEncoder encoder() { 
    return new BCryptPasswordEncoder(11, new SecureRandom("seed".getBytes("UTF-8))); 
} 

は、(セキュリティ上の理由から)カスタム "シード"

2に依存しています。 前述のように...あなたがハッシュしているパスワードを取得する方法はわかりません。

String passwordToHash = new String(password.getBytes("UTF-8")); 

3 - どのようにあなたのDBにハッシュを保存しますか? 「保存」プロセス中に生成するハッシュと、そのプロセス後に保存したハッシュが同じかどうかを確認できますか?

希望します。

+0

1.私はtry/catchメソッドまたはスロー宣言を追加したいと思っています –

+0

2.私はマッチアイデアを実行しました - 人間が読めるパスワードと保存されたパスワードを取得しました。電子メールで可能なユーザーを最初に取得してから、入力したパスワードとパスワードが保存されているかどうかを確認してください - if(passwordEncoder.matches(password、checkAccount.getPassword())){ –

+0

3。 - レジスタマッピングに - 私はこのような新しいアカウントを隠しておく - そしてsaveAndFlushを行う - - ので、メールが存在するかどうかを確認するためにチェックを行う\t \t \t \t //いくつかの \t \t \t \t TblLoginを作成していない場合newAcc = tblLoginRepository.saveAndFlush(新しいTblLogin()\t \t \t \t \t \t \tメール、 \t \t \t \t \t \t \t passwordEncoder.encode(パスワード)、 \t \t \t \t \t \t \tピン \t \t \t \t \t \t))。 –

関連する問題