导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--测试的-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
方式一:在application.properties中配置
server.port= 8080
spring.security.user.name= xxx
spring.security.user.password=xxx
方式二:通过配置类
//第二种实现方式
public class myTwoSecurity extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
/*加密密码*/
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode("123");
/*用户数据*/
auth.inMemoryAuthentication().withUser("lok").password(encode).roles("admin");
}
@Bean
public PasswordEncoder password(){ return new BCryptPasswordEncoder();}
}
方式三:自定义配置类 模拟从数据库查询数据
1、编写配置类
@Configuration
public class MySecurity extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(password());
}
@Bean
public PasswordEncoder password(){ return new BCryptPasswordEncoder();}
}
2、编写Service
@Service("userDetailsService")
//注意@Service("userDetailsService") 的名字 要与1中private UserDetailsService userDetailsService;的相同
public class MyUser implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
/*模拟角色权限*/
List<GrantedAuthority> authorities= AuthorityUtils.commaSeparatedStringToAuthorityList("roole");
/*模拟用户数据*/
System.out.println("走到这里");
return new User("xiaokai",new BCryptPasswordEncoder().encode("123"),authorities);
}
}