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角色测试权限";
    }
}

猜你喜欢

转载自blog.csdn.net/JayVergil/article/details/84862420