2014-12-31 25 views
0

這裏是我的登錄表單如何j_spring_security_check獲取密碼值

<form class="login-form" action="j_spring_security_check" method="post" > 
    <fieldset> 
    <legend>Login Here</legend> 

    <div class="form-group required"> 
     <label id="inputEmail" class="control-label col-md-4">Email</label> 
     <div class="col-md-8"> 
     <input type="email" class="form-control" id="username" name="username" placeholder="Enter email" > 
     </div> 
    </div> 
    <div class="form-group"> 
     <label id="inputpwd" class="control-label col-md-4">Password</label> 
     <div class="col-md-8"> 
     <input type="password" class="form-control" id="pwd" name="password" placeholder="Enter password" > 
     </div> 
    </div> 
    <p><input type="submit" value="Login"/></p> 
    </fieldset> 
</form> 

我如何可以檢索輸入,我們給的密碼,它實現的UserDetailsS​​ervice

public class LoginUserDetails implements UserDetailsService { 

    @Override 
    public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException { 

     final User user = DataLayer.queryToGetUserDetails(username); 

返回新的UserDetails(A類中){

 private static final long serialVersionUID = 2059202961588104658L; 

     @Override 
     public boolean isEnabled() { 
      return true; 
     } 

     @Override 
     public boolean isCredentialsNonExpired() { 
      return true; 
     } 

     @Override 
     public boolean isAccountNonLocked() { 
      return true; 
     } 

     @Override 
     public boolean isAccountNonExpired() { 
      return true; 
     } 

     @Override 
     public String getUsername() { 
      return user.getUsername(); 
     } 

     @Override 
     public String getPassword() { 
      return user.getPassword(); 
     } 



     //To DO for authentication. 
     @Override 
     public Collection<? extends GrantedAuthority> getAuthorities() { 
      List<SimpleGrantedAuthority> auths = new java.util.ArrayList<SimpleGrantedAuthority>(); 
      auths.add(new SimpleGrantedAuthority("patient")); 
      return auths; 
     } 
    }; 
} 

}

我返回上面的值。因此,爲了做定製驗證我需要密碼字段類中提前

回答

0

的是UserDetails從loadUserByUsername返回將用於與您在使用您在SecurityConfiguration

設置的PasswordEncoder通過密碼 謝謝
@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder); 
} 

接口的PasswordEncoder

public interface PasswordEncoder { 
    String encode(CharSequence rawPassword); 
    boolean matches(CharSequence rawPassword, String encodedPassword); 

rawPassword參數是您在

通過密碼

編輯:

你需要有如下一個SecurityConfiguration類:

@Configuration 
@EnableWebSecurity 
@ComponentScan 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Inject 
    private LoginUserDetails loginUserDetails; 

    @Bean 
    public BCryptPasswordEncoder passwordEncoder(){ 
     return new BCryptPasswordEncoder(); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/login").permitAll() 
       .and() 
      .authorizeRequests() 
       .anyRequest().hasRole("ROLE_USER") 
       .and() 
      .formLogin() 
       .usernameParameter("j_username") //user name form name 
       .passwordParameter("j_password") //password form name 
       .loginProcessingUrl("/j_spring_security_check") //form submit url 
       .loginPage("/login") 
       .failureUrl("/") 
       .defaultSuccessUrl("") 
       .and() 
       .logout() 
       .logoutSuccessUrl("/"); 
    } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(loginUserDetails).passwordEncoder(passwordEncoder); 
    } 
+0

哪裏我需要添加此代碼...只是檢查我的代碼粘貼IHAVE我整個userLoginDetails代碼 – Prakhash

+0

<形式登錄登錄頁=「/登錄」 認證失敗-URL =「/錯誤」 用戶名參數=「用戶名「password-parameter =」password「 default-target-url =」/ medicheck「/> I有這樣的security-config.xml。除了這個 – Prakhash

0
@Controller

公共類LoginUserDetails實現的UserDetailsS​​ervice {

@RequestMapping("/j_spring_security_check") 
public UserDetails loadUserByUsername(final String username,String password) throws UsernameNotFoundException { 

    final User user = DataLayer.queryToGetUserDetails(username,password); 

}}

+0

是否需要創建這個SecurityConfiguration?j_spring_security_check是內置的彈簧安全選項嗎?是否有可能像這樣定製 – Prakhash