1.继承extends WebSecurityConfigurerAdapter
①重写方法:
@Override
protected void configure(HttpSecurity http) throws Exception
②密码加密
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
③:使用记住我
@Autowired
PersistentTokenRepository tokenRepository;
@Bean public PersistentTokenBasedRememberMeServices getPersistentTokenBasedRememberMeServices() { PersistentTokenBasedRememberMeServices tokenBasedservice = new PersistentTokenBasedRememberMeServices( "remember-me", userDetailsService, tokenRepository); return tokenBasedservice; }
替换记住我第二种方案,使用JdbcTokenRepositoryImpl:
@Bean public PersistentTokenRepository persistentTokenRepository() { JdbcTokenRepositoryImpl tokenRepositoryImpl = new JdbcTokenRepositoryImpl(); tokenRepositoryImpl.setDataSource(dataSource); return tokenRepositoryImpl; }
④:存储凭据在数据库中,所以要在UserDetailsService中配置DaoAuthenticationProvider来处理
//创建一个类实现此方法
@Autowired @Qualifier("customUserDetailsService") UserDetailsService userDetailsService;
@Bean public DaoAuthenticationProvider authenticationProvider() { DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); authenticationProvider.setUserDetailsService(userDetailsService); authenticationProvider.setPasswordEncoder(passwordEncoder()); return authenticationProvider; }
2.初始化类注册 springSecurityFilter,穿件一个类继承extends AbstractSecurityWebApplicationInitializer:
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
3.配置springmvc:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.yiibai.springmvc") public class AppConfig extends WebMvcConfigurerAdapter{
重写此方法:
@Override
public void configureViewResolvers(ViewResolverRegistry registry)
4.spring初始化器类:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { AppConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return null; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }