2016-06-22 7 views
2

私はSpringで設定したユーザー認証が必要なGoogle Chrome拡張機能を作成していますが、現在開発中の私のコードでは、現在のところユーザー名とパスワードのサンプルがいくつかあります。この時点で、私は実際のユーザー名とパスワードを追加する準備はできていますが、それらを外部ファイルからAuthenticationManagerBuilderオブジェクトにロードできるようにします。ここでファイルからAuthenticationManagerBuilderにユーザーを追加する方法は?

は、これまでのところ、関連するコードです:

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
     .inMemoryAuthentication() 
      .withUser("user1").password("password1").roles("USER").and() 
      .withUser("user2").password("password2").roles("USER").and() 
      .withUser("user3").password("password3").roles("USER"); 
} 

私はこのようなものが含まれますファイルからではなくauthオブジェクトを構築することができるようにしたい:

user1 password1 
user2 password2 
user3 password3 

どのように私は希望これを行う(それが可能であれば)?

答えて

2

代わりにUserDetailsServiceを使用してください。 loadUserByUsername(String username)メソッド内のファイルを読み込んで、与えられたusernameのユーザーが存在する場合は、そのユーザーを表すUserDetailsまたはUserを返します。それ以外の場合はUsernameNotFoundException例外を投げる:

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    // Read the file 
    // Loop through all users and search for the given username 
    // Return User or throw UsernameNotFoundException 
    auth.userDetailsService(username -> { 
      try { 
       String pathToFile = // Path to file; 
       List<String> users = Files.readAllLines(Paths.get(pathToFile)); 
       for (String user : users) { 
        String[] parts = user.split("\\s+", 2); 
        String theUsername = parts[0]; 
        String password = parts[1]; 

        if (username.equals(theUsername)) 
         return new User(theUsername, password, Collections.singleton(new SimpleGrantedAuthority("USER"))); 
       } 
       throw new UsernameNotFoundException("Invalid username"); 
      } catch (Exception e) { 
       throw new UsernameNotFoundException("Invalid username"); 
      } 
    }); 
} 
+0

このコードをもう少し拡張することは可能でしょうか? Thanks @ ali-dehghani –

+0

@CameronPaytonおそらく更新は –

+0

が 'split'呼び出しを与えるのを助けます、私のユーザ/パスワードファイルをフォーマットする必要のある特別な方法はありますか?のように、ユーザー*スペース*パスワードまたはユーザー*タブ*パスワード? –

関連する問題