SpringSecurity创建角色和设置权限
一.创建角色
在之前创建完项目后,可以在SpringSecurityConfig类中重写configure方法并进行自定义创建角色
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { //创建用户角色,将测试用户放入内存用于验证 //下面注释的是旧版本的创建方式因为新的Spring security 5.0中新增了多种加密方式,也改变了密码的格式,所以无法使用 /*auth.inMemoryAuthentication().withUser("admin").password(("123456")).roles("ADMIN");*/ //创建ADMIN角色 auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("admin").password(new BCryptPasswordEncoder() .encode("123456")).roles("ADMIN"); //创建ADMIN角色 auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("demo").password(new BCryptPasswordEncoder() .encode("demo")).roles("USER"); }
二.设置权限
在QxglatApplication类中创建多一个@RequestMapping地址用于测试权限
如使用 @PreAuthorize("hasRole('ROLE_ADMIN')")需要在类的头部加上@EnableGlobalMethodSecurity(prePostEnabled = true)//打开权限验证
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})//去掉数据库等信息的依赖 @RestController//@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 @EnableAutoConfiguration//SpringBoot程序入口 @EnableGlobalMethodSecurity(prePostEnabled = true)//打开权限验证 public class QxglxtApplication { public static void main(String[] args) { SpringApplication.run(QxglxtApplication.class, args); } //设置一个URL路径"/",输入"/"后提示"hello spring boot"页面 @RequestMapping("/") public String home(){ return "hello spring boot"; } //用于新创建的角色,如何是该角色登录可以拥有所有访问权限,否则无法访问 @RequestMapping("/ADMIN") public String ceshi(){ return "测试ADMIN"; } //验证不同角色的登录权限 @PreAuthorize("hasRole('ROLE_ADMIN')")//只有是ADMIN权限的才可以访问该地址,使用该权限需要头部引入打开权限验证注解 @RequestMapping("/csqx") public String role(){ return "ADMIN和ROLE角色测试权限"; } }