spring-security整合springboot和入门案例

首先先说明一下我测试用到的web模板引擎是thymeleaf


  • 我们先导入相应的start,如thymeleaf、security、web:
        
			org.springframework.boot
			spring-boot-starter-thymeleaf
		
		
			org.springframework.boot
			spring-boot-starter-security
		
		
			org.springframework.boot
			spring-boot-starter-web
		
  • 再添加thymeleaf和security的整合包:

			org.thymeleaf.extras
			thymeleaf-extras-springsecurity4
		

各个版本这里我用的如下:

3.0.9.RELEASE
		2.3.0
		3.0.2.RELEASE
  • 编写SpringSecurity的配置类并标识注解@EnableWebSecurity和继承WebSecurityConfigurerAdapter类:
@EnableWebSecurity
public class MySecurityConfig extends WebSecurityConfigurerAdapter 

实现父类的configure实现并定义授权和认证规则:

先看看认证规则,我们简单一定如下:

//定义认证规则
    @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");

    }

授权规则如下:

//定义授权规则
    @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.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("remeber");
        //登陆成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登录
        //点击注销会删除cookie

    }

登录页面:





Insert title here


	

欢迎登陆


用户名:
密码:
记住我

 

Controller下做一下简单映射:

@Controller
public class KungfuController {
	private final String PREFIX = "pages/";
	/**
	 * 欢迎页
	 * @return
	 */
	@GetMapping("/")
	public String index() {
		return "welcome";
	}
	
	/**
	 * 登陆页
	 * @return
	 */
	@GetMapping("/userlogin")
	public String loginPage() {
		return PREFIX+"login";
	}
}	

 

效果如下:

spring-security整合springboot和入门案例_第1张图片

 

spring-security整合springboot和入门案例_第2张图片

 

 

 

你可能感兴趣的:(spring,boot)