一.创建角色
在之前创建完项目后,可以在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角色测试权限";
}
}