<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
创建配置类,继承WebSecurityConfigurerAdapter类,加上注解EnableWebSercurity
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/level1/**").hasRole("vip1")
.antMatchers("/level2/**").hasRole("vip2")
.antMatchers("/level3/**").hasRole("vip3");
//关闭防止网站攻击工具
http.csrf().disable();
/*//开启框架默认的登陆、登出页面
http.formLogin().defaultSuccessUrl("/main.html");*/
//定制自己的登陆页面,
/*loginPage()与loginProcessingUrl()的含义
1.以loginPage中自定义的页面,loginProcessingUrl()里面的数据,指登陆认证的页面。
* */
http.formLogin().loginPage("/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/main.html").loginProcessingUrl("/tologin");
http.logout().logoutSuccessUrl("/login.html");
//安全框架登陆页面的记住我功能,默认保存两周
http.rememberMe().rememberMeParameter("remember");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("root").password(new BCryptPasswordEncoder().encode("123")).roles("vip1","vip2","vip3")
.and()
.withUser("guest").password(new BCryptPasswordEncoder().encode("123")).roles("vip1")
.and()
.withUser("kuang").password(new BCryptPasswordEncoder().encode("123")).roles("vip2","vip1");
}
}
重写configure(http请求认证)方法,内容包括认证请求的权限认定,认证登陆页面的自定义,请求参数的username和password参数配置,登出成功返回页面。
其中loginPage与loginProcessingUrl方法的区别:loginPage为自定义的登陆页面,loginProcessingUrl为发起请求地址的前缀(例如,form表单是以toLogin发起请求,那么loginProcessingUrl(“/toLogin”))
@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/level1/**").hasRole("vip1") .antMatchers("/level2/**").hasRole("vip2") .antMatchers("/level3/**").hasRole("vip3"); //关闭防止网站攻击工具 http.csrf().disable(); /*//开启框架默认的登陆、登出页面 http.formLogin().defaultSuccessUrl("/main.html");*/ //定制自己的登陆页面, /*loginPage()与loginProcessingUrl()的含义 1.以loginPage中自定义的页面,loginProcessingUrl()里面的数据,指登陆认证的页面。 * */ http.formLogin().loginPage("/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/main.html").loginProcessingUrl("/tologin"); http.logout().logoutSuccessUrl("/login.html"); //安全框架登陆页面的记住我功能,默认保存两周 http.rememberMe().rememberMeParameter("remember"); }
重写configure(授权认证)方法,内容包括添加用户、密码、角色(权限)信息。
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("root").password(new BCryptPasswordEncoder().encode("123")).roles("vip1","vip2","vip3") .and() .withUser("guest").password(new BCryptPasswordEncoder().encode("123")).roles("vip1") .and() .withUser("kuang").password(new BCryptPasswordEncoder().encode("123")).roles("vip2","vip1"); }
原文:https://www.cnblogs.com/youisme/p/14806197.html