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

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

权限控制之角色


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


前端


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


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


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


权限字符


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

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


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


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


菜单权限


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


角色分配


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


用户管理部分分配角色


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


角色管理部分分配用户


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


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


PreAuthorize


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


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


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

/**
     * 查询代码生成列表
     */
    @PreAuthorize("@ss.hasPermi('tool:gen:list')")
    @GetMapping("/list")
    public TableDataInfo genList(GenTable genTable)
    {
        startPage();
        List<GenTable> list = genTableService.selectGenTableList(genTable);
        return getDataTable(list);
    }


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

/**
 * RuoYi首创 自定义权限实现,ss取自SpringSecurity首字母
 * 
 * @author ruoyi
 */
@Service("ss")
public class PermissionService
{
    /**
     * 验证用户是否具备某权限
     * 
     * @param permission 权限字符串
     * @return 用户是否具备某权限
     */
    public boolean hasPermi(String permission)
    {
        if (StringUtils.isEmpty(permission))
        {
            return false;
        }
        LoginUser loginUser = SecurityUtils.getLoginUser();
        if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions()))
        {
            return false;
        }
        return hasPermissions(loginUser.getPermissions(), permission);
    }


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


角色表设计


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

目录
相关文章
|
SQL
若依框架---角色与权限
若依框架---角色与权限
757 0
|
SQL XML Java
若依框架 --- 使用数据权限功能
若依框架 --- 使用数据权限功能
1594 0
|
SQL 数据库
若依框架---树状层级部门数据库表
若依框架---树状层级部门数据库表
1320 0
|
NoSQL Redis 数据安全/隐私保护
若依框架----token权限控制逻辑
若依框架----token权限控制逻辑
1338 0
若依框架----登录界面美化
若依框架----登录界面美化
1300 0
|
9月前
|
SQL JSON 前端开发
若依RuoYi脚手架二次开发教程(二次开发必学技能)
本次我们将通过一个菜品管理模块开发的案例,来演示拿到若依框架后,如何在若依管理系统上进行二次开发,升级改造为自己的管理系统。适合以若依作为项目脚手架的公司开发人员、毕业设计的学生及开源项目学习者。
5388 1
若依RuoYi脚手架二次开发教程(二次开发必学技能)
|
9月前
|
监控 NoSQL Java
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
若依(RuoYi)是一款基于Spring Boot和Vue.js的开源Java快速开发脚手架,支持OAuth2、JWT鉴权,集成多种安全框架和持久化框架。它提供了系统管理、监控管理、任务调度、代码生成等常用功能模块,适合中小型公司快速搭建Web应用。本文主要介绍若依框架的特点、版本发展、优缺点及项目部署步骤,帮助开发者快速上手并部署若依项目。
11791 3
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
23019 68
|
8月前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
3901 4
|
SQL XML Java
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
4184 0