• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

若依框架---权限控制角色设计

武飞扬头像
童小纯
帮助1

学新通

学新通  

权限控制之角色

在阐述完若依框架中的菜单后,我们来看一下若依系统中的角色是如何设计的。

前端

在前端页面上,系统管理->角色管理中,我们可以看到其角色管理的主页面:

学新通

 点击新增,我们来看一下一个角色需要配置什么信息:

学新通

 除名称外,另外两个比较值得关注的,一个是菜单权限,一个是权限字符,我们分别来看。

权限字符

权限字符,我们展开label前面的提示信息:

控制器中定义的权限字符,如@PreAuthorize(@ss.hasRole("admin"))

可见,权限字符是可以做到后端接口权限控制的。

对于其中的PreAuthorize注解,我们稍后展开来讲。

菜单权限

这个也很好理解,就是该角色拥有查看哪些目录、菜单以及按钮的权限。

角色分配

我们再来看一下若依系统中是如何给用户分配角色的。

用户管理部分分配角色

可以在用户管理版块给用户分配角色,并且该处可以给一个用户分配多个角色。如下图:

学新通

 角色管理部分分配用户

如下图所示,点击某个角色后面的更多按钮,在下拉框中点击“分配用户”,在分配用户界面去多选用户批量给一个角色分配用户。

学新通

学新通

 经过测试,两个版块的操作数据是互通的。

PreAuthorize

接下来,我们阐述一下Spring-Security中的注解PreAuthorize。

该方法是在方法调用前进行权限检查。

比如,我们找到若依系统中的一个样例:

  1.  
    /**
  2.  
    * 查询代码生成列表
  3.  
    */
  4.  
    @PreAuthorize("@ss.hasPermi('tool:gen:list')")
  5.  
    @GetMapping("/list")
  6.  
    public TableDataInfo genList(GenTable genTable)
  7.  
    {
  8.  
    startPage();
  9.  
    List<GenTable> list = genTableService.selectGenTableList(genTable);
  10.  
    return getDataTable(list);
  11.  
    }

我们可以点击查看hasPermi方法,查看其执行逻辑:

  1.  
    /**
  2.  
    * RuoYi首创 自定义权限实现,ss取自SpringSecurity首字母
  3.  
    *
  4.  
    * @author ruoyi
  5.  
    */
  6.  
    @Service("ss")
  7.  
    public class PermissionService
  8.  
    {
  9.  
     
  10.  
    /**
  11.  
    * 验证用户是否具备某权限
  12.  
    *
  13.  
    * @param permission 权限字符串
  14.  
    * @return 用户是否具备某权限
  15.  
    */
  16.  
    public boolean hasPermi(String permission)
  17.  
    {
  18.  
    if (StringUtils.isEmpty(permission))
  19.  
    {
  20.  
    return false;
  21.  
    }
  22.  
    LoginUser loginUser = SecurityUtils.getLoginUser();
  23.  
    if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions()))
  24.  
    {
  25.  
    return false;
  26.  
    }
  27.  
    return hasPermissions(loginUser.getPermissions(), permission);
  28.  
    }

通俗的说,hasPermi就是判断当前登录用户是否拥有某个权限,有则返回true,无此权限则返回false。

角色表设计

若依系统中的角色表为sys_role,我们来大致看一下其中的字段设计:

学新通

 学新通

专栏:若依框架 

学新通 

                                                                       关注公众号,领取资料。 

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhifkhig
系列文章
更多 icon
同类精品
更多 icon
继续加载