spring security权限管理框架(1),根据角色权限登录

  

spring security框架学习总结
前提:在做演示之前,我们先创建项目,并将项目导入IDE
 spring security权限管理框架(1),根据角色权限登录”> <br/>测试项目是否运行成功,成功后进行正式开始学习<br/>一.Case1:只要能登录即可<br/>目标:我们在访问项目是访问指数可以直接进入,不需要拦,截访问其他路径是需要进行登录验证,并且允许登录用户注销和使用表单进行登录,不拦截前台js, css,图像等文件,我们在内存中设置了一个管理用户,可以进行登录<br/>直接上代码(代码中会有注释):<br/> <强> SecuDemoApplication: </强> </p>
  <pre> <代码>包com.dhtt.security.SecuDemo;
  
  进口org.springframework.boot.SpringApplication;
  进口org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  进口org.springframework.boot.autoconfigure.SpringBootApplication;
  进口org.springframework.web.bind.annotation.RequestMapping;
  进口org.springframework.web.bind.annotation.RestController;
  
  @SpringBootApplication
  @RestController
  @EnableAutoConfiguration
  公开课SecuDemoApplication {
  
  公共静态void main (String [] args) {
  SpringApplication.run (SecuDemoApplication.class, args);
  }
  
  @RequestMapping(“/指数”)
  公共字符串hello () {
  返回“你好弹簧引导....”;
  
  }
  
  @RequestMapping (“/home”)
  公共字符串回家(){
  返回“这我家....”;
  
  }
  }
  </代码> </pre>
  <p> <强> SpringSecruityConfig: </强> </p>
  <pre> <代码>包com.dhtt.security.SecuDemo;
  
  进口org.springframework.context.annotation.Configuration;
  进口org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  进口org.springframework.security.config.annotation.web.builders.HttpSecurity;
  进口org.springframework.security.config.annotation.web.builders.WebSecurity;
  进口org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  进口org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  
  @ configuration
  @EnableWebSecurity
  公开课SpringSecruityConfig延伸WebSecurityConfigurerAdapter {/* *
  * HTTP请求拦截处理
  */@Override
  保护无效配置(HttpSecurity http){抛出异常
  http.authorizeRequests ()
  .antMatchers(“/指数”).permitAll()//主路径直接请求
  .authenticated .anyRequest()()//请他请求都要验证
  ,()
  .permitAll .logout()()//允许注销
  ,()
  .formLogin ();//允许表单登录
  .disable http.csrf () ();//关闭csrf的认证
  }/* *
  *处理前端文件,拦截忽略
  */@Override
  公共空间配置(WebSecurity web)抛出异常{
  web.ignoring () .antMatchers (“/js/* *”、“/css/* *”,“/图像/* *”);
  }/* *
  *设置内存中的用户管理
  */@Override
  保护无效配置(AuthenticationManagerBuilder auth)抛出异常{
  auth.inMemoryAuthentication () .withUser (“admin”) .password .roles (“123456”) (“admin”);
  }
  }
  </代码> </pre>
  <p>然后我们启动项目,在前台访问路径<br/>(1)访问http://localhost: 8080/指数成功<br/> <img src=

  

(2)访问http://localhost: 8080/home:
我们发现前台会为我们跳转到登录界面,接下来我们进行登录验证,我们发现登录界面没有跳,转证明登录失败,此时我们观察后台
 spring security权限管理框架(1),根据角色权限登录

  

发现后台报错
(3)报错问题解决:原因是弹簧引导的版本和spring Security的版本问题,我们需要提供一个PasswordEncorder实例
<强> MyPasswordEncoder:

  
 <代码>包com.dhtt.security.SecuDemo;
  
  进口org.springframework.security.crypto.password.PasswordEncoder;
  
  公共类MyPasswordEncoder实现PasswordEncoder {
  
  @Override
  公共字符串编码(CharSequence进行rawPassword) {
  返回rawPassword.toString ();
  }
  
  @Override
  公共布尔匹配(CharSequence进行rawPassword,字符串encodedPassword) {
  返回encodedPassword.equals (rawPassword);
  }
  
  }
   
  

<强> SpringSecruityConfig中修改部分:

  
 <代码>/* *
  *设置内存中的用户管理
  */@Override
  保护无效配置(AuthenticationManagerBuilder auth)抛出异常{
  auth.inMemoryAuthentication ()。passwordEncoder(新MyPasswordEncoder ())
  .withUser (“admin”) .password .roles (“123456”) (“admin”);
  }

spring security权限管理框架(1),根据角色权限登录