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

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

权限控制之角色


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


前端


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


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


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


权限字符


权限字符,我们展开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,我们来大致看一下其中的字段设计:

目录
相关文章
|
7月前
|
SQL
若依框架---角色与权限
若依框架---角色与权限
420 0
|
7月前
|
SQL XML Java
若依框架 --- 使用数据权限功能
若依框架 --- 使用数据权限功能
876 0
|
1月前
|
存储 安全 关系型数据库
权限组件是怎么设计的
【10月更文挑战第26天】在实际设计过程中,还需要根据具体的业务需求和技术架构进行灵活调整和优化。
|
2月前
|
存储 JavaScript 前端开发
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
235 2
|
7月前
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(一)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(一)
339 1
|
7月前
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(三)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(三)
330 1
|
7月前
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(二)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(二)
178 0
|
5月前
|
监控 数据安全/隐私保护
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
|
6月前
|
存储 安全 数据库
管理端开发如何快速理解并实现权限控制总结
管理端开发如何快速理解并实现权限控制总结
|
7月前
|
SQL 前端开发 数据安全/隐私保护
若依框架---权限管理设计
若依框架---权限管理设计
561 0