Jeesite权限处理,权限分配,根据不同的用户展示不同的信息,按钮权限等

jeesite关于权限这方面的记录或者文章很少,看官方文档又看不懂。自己的业务又需要进行权限处理,怎么办,当然问大佬了。

我就记录下我的解决办法,给jeesite权限方面的文章做点贡献!!

我先说下我的业务逻辑。我需要实现不同公司的人登陆后台,只能看到属于自己公司的数据。然而后台管理员可以看到全部的。怎么处理呢?往下看!

  1. 第一步,我们先创建一个机构(也可以不创建),再创建公司,因为公司不同 所以需要几个同级但是公司不同的公司,有点绕 希望能明白,看下图
  2. 接着创建一个角色 这个角色作为管理员用户
  3. 创建用户 创建一个管理员用户
  4. 创就管理员用户这里需要注意点结构选择最高级的,比如我只需要按公司来分配数据,那么我就创建一个结构就好了,这行机构就是这个应用的公司就好了。然后他的所属公司如果你也有创建那么也是一样,选择属于他的就好了、下面有个分配角色 这个角色就是刚刚我们创建的管理员用户,我这里是第二个,你们的找到自己的。
  5. 创建好后就可以看到上图这样了的,我们选择刚刚创建的游湖点击最后一个箭头,选择数据权限,再看下图
  6. 这里呢我们给这个用户增加权限,因为这是个管理员,所以把所有机构和公司都点上,他就有这些机构和公司的全部数据和权限
  7. 上面就是创建管理员的操作,创建普通员工和上面一样,如果你要根据机构啊,公司啊什么的来分配权限的话那就创建用户的时候分配权限选择对应的结构和公司,或者机构 或者公司就好了。注意:创建角色的时候也应该给他分配数据权限,可以让普通用户和管理员用户在角色和用户设置里处于平级。

    上面我们是在jeesite的后台设置里操作,那些东西配置好后并不会生效,所以我们需要增加代码。往下看。

  8. 实体 Entity 这里为了精简,我删除了部分代码。
    
    
    import java.util.Date;
    
    /**
     * 活动信息表Entity
     *
     * @author gkh
     * @version 2019-01-16
     */
    @Table(name = "activity", alias = "a", columns = {
            @Column(name = "id", attrName = "id", label = "id", isPK = true),
            @Column(name = "activity_title", attrName = "activityTitle", label = "活动标题", ),
            @Column(name = "company_code", attrName = "companyCode", label = "对应公司"),
     
            @Column(includeEntity = DataEntity.class),
    },
            joinTable = {
                    @JoinTable(
              type = Type.LEFT_JOIN, entity = GradeStandard.class, alias = "b",     
              attrName = "gradeStandard",
              on = "a.grade_standard_ids = b.id",
              columns = {@Column(includeEntity = GradeStandard.class)}),
            },
            extWhereKeys = "dsf", orderBy = "a.update_date DESC"
    
    )
    public class Activity extends DataEntity<Activity> {
    
        private static final long serialVersionUID = 1L;
        private String activityTitle;        // 活动标题
        private String activityContent;        // 活动内容
      
        private String companyCode;             //对应公司Code
        private UserInfo userInfo;
    
        public UserInfo getUserInfo() {
            return userInfo;
        }
    
        public void setUserInfo(UserInfo userInfo) {
            this.userInfo = userInfo;
        }
    
        public Activity() {
            this(null);
        }
    
        public Activity(String id) {
            super(id);
        }
    
        public String getCompanyCode() {
            return companyCode;
        }
    
        public void setCompanyCode(String companyCode) {
            this.companyCode = companyCode;
        }
    
     
    
    }
    上面是实体里一些属性,因为我是根据公司来判断谁能看见哪些数据的,所以我加了一个属性company_code对应的是jeesite系统表的js_sys_company的company_code字段,这里有人要问了,我怎么知道我的这个用户对应哪个公司?我想说,你刚刚配置用户的不是配置了吗???这哈晓得配置数据权限范围是啥意思了吧。并且呢我在@Table后加了
    extWhereKeys = "dsf" 这个东西你要问我是啥,我只能说去看文档,加了这个后我们再去service层
  9.  @Override
        public Page<Activity> findPage(Activity activity) {
            activity.getSqlMap().getDataScope().addFilter("dsf", "Company", "a.company_code",
                    DataScope.CTRL_PERMI_HAVE);
            return super.findPage(activity);
        }
    这只是我service的一个findPage方法 是jeesite自己生层的,分页和查询全部数据的一个方法。我加了一个

activity.getSqlMap().getDataScope().addFilter("dsf", "Company", "a.company_code",
        DataScope.CTRL_PERMI_HAVE);

  1. 1.你的参数,2.刚刚实体里写的,3.你想根据什么表进行关联查询的表名,我是根据公司,所以写了Company,最后一个是关联字段名,我在实体里加了company_code.,这串代码怎么说呢,其实是在这个findPage的SQL后加了一个查询条件。这样呢我就可以查询到特动公司的用户在我的列表数据里只能看到他公司的了。要细化到个人或者机构的话那就换表进行了。之所以卸载findPage里面是因为我就用系统的了。不想自己写。你可以单独写方法自己随便调用就好了

上面我们介绍了单表的数据权限过滤,然后多表的呢?我们先理清一下业务。

具体是这样的,我有两张表,一张活动表有活动信息,一张报名表有用户信息,用户报名活动记录到报名表,报名表里记录报名,报名的什么活动,谁报名的。因为我的业务需求是只有自己公司的人才能看到自己的数据,那么报名了这个公司的活动相应的也只有这个公司的人才能看的到谁报名的,怎么做呢?看代码

Entity

@Table(name = "activity_apply", alias = "a", columns = {
       
        @Column(name = "activity_id", attrName = "activityId", label = "活动id"),
       
        @Column(name = "apply_user_id", attrName = "applyUserId", label = "申请人"),
      
},

        joinTable = @JoinTable(
                type = Type.LEFT_JOIN, alias = "b", entity = Activity.class,
                attrName = "activity",
                columns = {@Column(includeEntity = Activity.class)},
                on = "a.activity_id = b.id"
        ),
        extWhereKeys="dsfCompany",orderBy = "a.update_date DESC"
)

在这里我加了extWhereKeys="dsfCompany",这个和上面不一样了哦,不要只看这个还要看到哦JoinTable,这里通过两id进行了查询

@Override
	public Page<ActivityApply> findPage(ActivityApply activityApply) {
		activityApply.getSqlMap().getDataScope().addFilter("dsfCompany", "Company",
				"b.company_code", "a.create_by", DataScope.CTRL_PERMI_HAVE);
		return super.findPage(activityApply);

service和上面一样,我也只是加在了findPage里,但是参数不一样了,我要查询的表是a大家看实体就可以看到别名了,但我这里个a里是没有company_code的 可是我连接了表b ,b是有这个字段的,所以我写了b.company_code,再后面一个参数应该是a.b的id(我是简写不要以为是这样) 然后就可以了。

这就是数据权限过滤,根据自己需求弄  附上官方的说明

按钮权限我下次再说,现在吹我快点部署了。。。。溜了

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
免费试听地址:B站搜索JeeGit观看《JeeSite4.x数据权限教程》、《JeeSite1.2.7系列基础教程》、《JeeSite4.x系列基础教程》等相关课程! 郑重声明:购课前,请认真听完第一章 课程简介 建议实战人群直接听:第九章、第十章 学生人群、刚入门:全听       数据权限主要讲解内容包含第一章 课程简介31.1 课程目标31.2 适用人群31.3 课程简介31.4 环境要求31.5 课程知识点大全31.6 课程售价31.7 购课声明31.8 资源清单31.9 售后方式41.10 讲师介绍4第二章 权限基础42.1 权限模型概述4第三章 JeeSite权限管理模型123.1 JeeSite1.2.7 权限管理模型123.2 JeeSite4.x 权限管理模型123.3 JeeSite4.x权限设计的扩展13第四章 用户管理144.1 JeeSite4.x内置用户类型144.1.1 用户管理思路144.1.2 网站会员、员工、单位、个人登录视图配置154.2 用户数据权限类型164.3实战训练、调试、日志查看16第五章 机构管理16第六章 角色管理186.1 JeeSite4.x角色管理概述186.2 JeeSite4.x越级授权与菜单权重186.3 JeeSite4.x 越级授权可能存在的隐患极其解决方案196.4用户表如何区分非管理员、系统管理员、二级管理员206.5 角色权限注意事项206.6 角色授权数据范围使用注意事项216.7 为何用户不设置员工权限无效?236.8 岗位管理与角色分类的岗位分类与角色分类有何区别?23第七章 二级管理员23第八章 系统管理员238.1 系统管理员238.2 总结:何时使用超级管理员、系统管理员、二级管理员?23第九章 Jeesite数据权限调用239.1 JeeSite4.x数据调用基础239.2 JeeSite4.x 实现数据权限推荐解决方案249.3多数源模式下数据权限bug简易解决方案249.4 JeeSite4.x 自定义扩展数据权限249.5支持全球地区、全球企业、全球机构、全球部门授权24第十章 JeeSite数据权限实战2410.1 案例一2410.2 案例二2410.3 案例三2510.4 案例四2510.5 案例五25第十一章 JeeSite4.x常见问题解答251.1数据权限管理的代码会公开吗,购买了能看吗?251.2 JeeSite数据权限教程是Thinkgem录制的吗?25第十二章 参考阅读2612.1、JeeSite官方文档2712.2、美国国家标准与技术研究院2712.3、中国国家标准化管理委员会2712.4、ITSEC欧洲安全评价标准2812.5、百度学术2812.6、开源框架2912.6.1 JeeSite2912.6.2 Casbin2912.6.3 Eladmin2912.6.4 Spring-boot-demo2912.6.5 Jeeplatform3012.6.6 Pig3012.6.7 Jeecg-boot3012.6.8 Jfinal3012.6.9 Guns3112.6.10 Zheng3112.6.11 Cloud-Platform3112.7 博文资源31

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值