springboot + security 基本使用
简单使用
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置
创建配置类
@EnableWebSecurity // 该类开启 Security
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
}
重写方法定义授权规则
- 可配置请求路径和角色
- 开启自带的登录功能
/login
- 开启自带的注销功能
/logout
- 开启记住我功能(存用户密码到session)
@Override
protected void configure(HttpSecurity http) throws Exception {
// 定制请求授权规则
http.authorizeHttpRequests()
.antMatchers("/").permitAll() // 所有用户都可访问
.antMatchers("/level1/**").hasRole("user")
.antMatchers("/level2/**").hasRole("user")
.antMatchers("/level3/**").hasRole("admin");
// 开启自动配置的登录功能(/login),重定向到 /login?error 表示登录失败
http.formLogin();
// 开启自动配置的注销功能(/logout),并在注销成功后返回首页
http.logout().logoutSuccessUrl("/");
// 开启记住我功能
http.rememberMe();
}
重写方法定义认证规则
配置用户密码和角色
这里使用内存信息,数据库信息需要使用 auth.jdbcAuthentication()
方法
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("admin").password(new BCryptPasswordEncoder().encode("admin")).roles("admin", "user")
.and()
.withUser("user").password(new BCryptPasswordEncoder().encode("user")).roles("user");
}