springsecurity框架的学习,根据操作修改后台ssm项目进行学习,利用注解控制权限(十三)

2020-11-20 14:21:07 浏览数 (1)

之前的我们实现了不同的用户登录之后,可以查看不同的菜单,这个控制是在前段页面使用springsecurity框架的标签进行限制的。现在我们还有另外的方法,那就是在controller层或者service层用注解进行控制,也就是写了注解之后,只有对应的权限才可以访问这个接口,没有的话就不走这个接口,也就走不到后面的业务层,这样就实现了控制。

也就是之前前端的控制只是视觉上面不显示,如果知道了路径还是可以访问对应的接口的。现在要做的就是视觉上面不显示,我后端也要进行控制,你知道了路径也不行,只要对应的用户没有权限,那么对应的后端的接口就不可以访问,只要就实现了全部的保护,前端后端都保护了。

开启注解控制权限的支持的代码放到哪个配置文件里面

之前说过项目里面有很多的容器,application.xml是父容器,springMVC.xml是子容器,springsecurity.xml是被application.xml引用的,所以配置写在springsecurity.xml和application.xml都一样,springsecurity.xml也可以看做是父容器。但是我们的controller层和service层是靠子容器维护的,这个配置的开启要和用注解的地方配对。用注解的地方是controller层和service层,是子容器,所以开启的代码要写在子容器的配置文件里面,所以现在的开启注解控制权限的代码要放在

对,就是放在springMVC.xml里面

代码语言:javascript复制
  <!--
        开启权限控制的注解支持
        secured-annotations="enabled"     springSecurity内部的权限控制注解开关
        pre-post-annotations="enabled"     spring指定的权限控制的注解开关
        jsr250-annotations="enabled"      开启java250注解支持
        -->
    <security:global-method-security
            secured-annotations="enabled"
            pre-post-annotations="enabled"
            jsr250-annotations="enabled"/>

注解实现控制权限的流程

1 开启注解控制权限的支持

开启之后就可以使用对应的注解了。开启代码如下

2 开启了之后,就可以使用了

在以上的controller层写上对应的注解,重新启动项目,用一个什么权限都没有用户登录,登录成功之后我们可以看到菜单是不显示的,因为没有权限,现在我们手动在浏览器输入后端的地址,也是不可以访问的,因为后端的controller上面写了权限控制的注解。这个直接访问后端的路径,没有权限会报错,会有一个默认的403页面的报错。

记住,有以下的注解

代码语言:javascript复制
   @Secured({"ROLE_PRODUCT","ROLE_ADMIN"})//springSecurity内部制定的注解
    @RolesAllowed({"ROLE_PRODUCT","ROLE_ADMIN"})//jsr250注解
    @PreAuthorize("hasAnyAuthority('ROLE_PRODUCT','ROLE_ADMIN')")//spring的el表达式注解

0 人点赞