Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十四):权限控制(Shiro 注解)

 

在线演示

演示地址:

    /**      * Shiro生命周期处理器      */     @Bean     public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {         return new LifecycleBeanPostProcessor();     }          /**      * 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证      * 配置以下两个bean(DefaultAdvisorAutoProxyCreator(可选)和AuthorizationAttributeSourceAdvisor)即可实现此功能      */     @Bean     @DependsOn({"lifecycleBeanPostProcessor"})     public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {         DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();         advisorAutoProxyCreator.setProxyTargetClass(true);         return advisorAutoProxyCreator;     }      @Bean     public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {         AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();         authorizationAttributeSourceAdvisor.setSecurityManager(securityManager());         return authorizationAttributeSourceAdvisor;     }
复制代码

添加注解

以菜单管理接口为例,添加 @RequiresPermissions("权限标识") 标识即可。

这个权限标识就是我们的菜单表中对应的权限标识字段(perms)对应的值。

SysMenuController.java

复制代码
package com.louis.kitty.admin.controller;  import java.util.List;  import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;  import com.louis.kitty.admin.model.SysMenu; import com.louis.kitty.admin.sevice.SysMenuService; import com.louis.kitty.core.http.HttpResult;  /**  * 菜单控制器  * @author Louis  * @date Oct 29, 2018  */ @RestController @RequestMapping("menu") public class SysMenuController {      @Autowired     private SysMenuService sysMenuService;          @RequiresPermissions({"sys:menu:add", "sys:menu:edit"})     @PostMapping(value="/save")     public HttpResult save(@RequestBody SysMenu record) {         return HttpResult.ok(sysMenuService.save(record));     }      @RequiresPermissions("sys:menu:delete")     @PostMapping(value="/delete")     public HttpResult delete(@RequestBody List<SysMenu> records) {         return HttpResult.ok(sysMenuService.delete(records));     }      @RequiresPermissions("sys:menu:view")     @GetMapping(value="/findNavTree")     public HttpResult findNavTree(@RequestParam String userName) {         return HttpResult.ok(sysMenuService.findTree(userName, 1));     }          @RequiresPermissions("sys:menu:view")     @GetMapping(value="/findMenuTree
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信