- サーバーサイド : Java8(Spring boot 1.3.0)
- DB : MongoDB
- フロント : AngularJS 1.4.5
- テンプレート : Thymeleaf
現在以下のような構成で勉強がてらシステムを組んでおり、認証処理で躓いております。
「はじめてのSpring Boot」という書籍を片手にネットも参考にしつつ開発しているのですが、認証処理でEメールとパスワードを送信した先で、「loadUserByUsername」に渡している「String email」が空でエラーになっております。
Java
1@Service 2public class LoginUserDetailsService implements UserDetailsService{ 3 @Autowired 4 UserRepository userRepository; 5 6 @Override 7 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { 8System.out.println("email : " + email); ←emailが空 9 10 List<User> userList = userRepository.findByEmail(email); 11 User user = userList.get(0); 12 13 if (user == null) throw new UsernameNotFoundException("The requested user is not found"); 14 return new LoginUserDetails(user); 15 } 16}
本やネットで色々調べてみたのですが、「loadUserByUsernameの引数にusernameがくるので~」程度の説明しかなく、どこからusernameを投げているのか分かりません。
※私の場合usernameではなくemailで変数を扱っております。
おそらく「WebSecurityConfigurerAdapter」を継承したクラスの以下処理で決めているのではと推測しているのですが、だからといて対処方法が見つからない状態です。
Java
1 http.formLogin() 2 .loginPage("/nicomana/login") 3 .loginProcessingUrl("/nicomana/login") 4 .failureUrl("/nicomana/login?error") 5 .defaultSuccessUrl("/nicomana", true) 6 .usernameParameter("email").passwordParameter("password"); ←ここか?
loadUserByUsernameへの引数をどうやってコントロールしているのか、ご存知の方がいらしたらご教示願います。
またspring bootのコードから「loadUserByUsername」を呼び出しているところでも読めればと企んでもいるのですが、Eclipseの使い方にもまだ慣れておらず、方法が分からに状態です。
自分の書いたコードはGit Bashなどのコマンドプロンプトを立ち上げて、findコマンドで該当文言を探したりしているのですが、spring bootはjarで固まっているのでその方法もとれませんでした。
該当文言の呼び出し箇所を、ライブラリから探す良い方法があれば、ご教示願います。
追記
ちなみにspring bootへのリクエストは、以下のとおりです。
javascript
1$scope.post_form = function() { 2 var req = { 3 'method' : 'POST', 4 'url' : url, 5 'data' : { 6 'email' : $scope.email, 7 'password' : $scope.password, 8 } 9 }; 10 $http(req).success(function(res) { 11 ~ 12 }).error(function() { 13 ~ 14 }); 15}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/27 12:50