跳到主要内容

03、Spring Security 实战 - 注解方式配置权限

前言

在前面已经介绍了通过内存方式配置用户,我们接着上一节继续介绍通过权限配置
 

权限配置

添加用户

在上一节的基础上,我们再添加一个用户名为admin,密码123,权限admin的用户。

	@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
   
     
        auth.inMemoryAuthentication()
                .withUser("user")
                .password(passwordEncoder().encode("123"))
                .authorities("user");
        auth.inMemoryAuthentication()
                .withUser("admin")
                .password(passwordEncoder().encode("123"))
                .authorities("admin");
    }

代码很简单一目了然,不做过多解释。

访问权限

还是在SpringSecurityConfig类中添加EnableGlobalMethodSecurity(prePostEnabled = true)注解
 

添加接口

之前在一、初体验中创建过Controller了,这里只需要在此基础上添加以下代码。

    @GetMapping("user")
    @PreAuthorize("hasAuthority('user')")
    public String user(){
   
     
        return "user";
    }

    @GetMapping("admin")
    @PreAuthorize("hasAuthority('admin')")
    public String admin(){
   
     
        return "admin";
    }

/user需要有user权限;/admin需要有admin权限
这里准备工作都已经准备好了,启动项目,进行验证

权限验证

在浏览器中访问http://localhost:8080/会自动跳转到登录页面。

验证user用户

通过user用户登录,浏览器打印index。继续访问http://localhost:8080/user接口,浏览器成功打印出user。
 
继续访问http://localhost:8080/admin接口,返回403,代表没有权限。
 

退出

通过http://localhost:8080/logout将user用户退出。

验证admin用户

通过admin用户登录,浏览器打印index。
继续访问http://localhost:8080/admin接口,浏览器成功打印出admin。
 
继续访问http://localhost:8080/user接口,返回403,代表没有权限。
 
做到这里,说明注解方式配置权限已经完成。