学习在IDEA中使用SpringBoot(十三)Spring Boot 与安全

一. 概念

在这里插入图片描述
在这里插入图片描述

二. web&安全

在这里插入图片描述

三. 代码实现

  1. 引入依赖
    在这里插入图片描述
    在这里插入图片描述

  2. config配置类

     @EnableWebSecurity
     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("remeber");
             //登陆成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登录
             //点击注销会删除cookie
     
         }
     
         //定义认证规则
         @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");
     
         }
     }
    
  3. 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";
     	}
     
     
     	/**
     	 * level1页面映射
     	 * @param path
     	 * @return
     	 */
     	@GetMapping("/level1/{path}")
     	public String level1(@PathVariable("path")String path) {
     		return PREFIX+"level1/"+path;
     	}
     
     	/**
     	 * level2页面映射
     	 * @param path
     	 * @return
     	 */
     	@GetMapping("/level2/{path}")
     	public String level2(@PathVariable("path")String path) {
     		return PREFIX+"level2/"+path;
     	}
     
     	/**
     	 * level3页面映射
     	 * @param path
     	 * @return
     	 */
     	@GetMapping("/level3/{path}")
     	public String level3(@PathVariable("path")String path) {
     		return PREFIX+"level3/"+path;
     	}
     
     
     }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值