SpringSecurity是针对Spring项目的安全框架,也是SpringBoot底层安全模 块默认的技术选型。他可以实现强大的web安全控制。
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、WebSecurityConfigurerAdapter 自定义Security策略
@EnableWebSecurity // 开启WebSecurity模式
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//super.configure(http);
//定制请求的授权规则
http.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/level1/**").hasRole("VIP1")
.antMatchers("/level2/**").hasRole("VIP2")
.antMatchers("/level3/**").hasRole("VIP3");
//开启自动配置的登录功能。效果:如果没有登录,没有权限就会来到登录页面
http.formLogin().usernameParameter("user").passwordParameter("pwd")
.loginPage("/userlogin");
//1、/login来到登录页
//2、重定向到/login?error表示失败
//3、更多详细规定
//4、默认post形式的/login代表处理登录
//5、一但定制loginPage;那么loginPage的post请求就是登录
//开启自定配置的注销功能
http.logout().logoutSuccessUrl("/");//注销成功以后来到首页
//1、访问/logout表示用户注销,清空session
//2、注销成功会返回/login?logout页面
//开启记住我功能
http.rememberMe().rememberMeParameter("remember");
//登录成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登录
//点击注销会删除cookie
}
// AuthenticationManagerBuilder 自定义认证策略
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//super.configure(auth);
auth.inMemoryAuthentication()
.withUser("zhangsan").password("123456").roles("VIP1","VIP2")
.and()
.withUser("lisi").password("123456").roles("VIP2","VIP3")
.and()
.withUser("wangwu").password("123456").roles("VIP1","VIP3");
}
}