WinFramework轻量级开发框架 | 窗体权限机制|C/S开发框架
作者:csframework|C/S框架网  发布日期:2022/01/20 18:58:00

WinFramework轻量级开发框架 | 窗体权限机制|C/S开发框架

Winform开发框架快速开发框架软件开发平台WinFramework轻量级框架插件框架原创软件@csframework.com

1. 窗体权限机制简介

WinFramework轻量级框架窗体权限采用逻辑运算“或/or“运算机制,功能权限值在 WinFramework.UI.Core.FunctionAuthority 中定义。

WinFramework.UI.Core.FunctionAuthorityCommon 设定了WinFramework轻量级开发框架中默认已占用的公共权限值,若需要扩展权限,应该避免使用这些已定义的权限值。

2. 计算机编程布尔运算(逻辑运算)

计算机编程布尔运算(逻辑运算)

逻辑运算通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。

逻辑运算:在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。

各种编程语言中的逻辑运算符

作用
C语言
Pascal
等于
==
=
不等于
!=
小于
大于
>
>
小于等于
大于等于
>=
>=
&&
and
||
or
!
not
异或
^
xor

运算规则

组合\结果\运算符.....And.......Or.........Xor
0......0.......................0..........0............0
1......0.......................0..........1............1
0......1.......................0..........1............1
1......1.......................1..........1............0
简单的说
And:同为真时为真
Or:同为假时为假
Xor:相同为假

3. 窗体权限定义 FormAuthority

重载 窗体属性CurrentAuthority,在 frmBaseData 基类窗体中定义的,功能窗体继承 frmBaseData 时,重写这个属性 CurrentAuthority 来定义窗体的权限

protectedoverrideint FormAuthority
{
    get
    {
        return base.CustomerAuthority;
    }
}

该属性默认为:

//当前窗体初始化的公共权限
protected override int FormAuthority
{
    get
    {
        return FunctionAuthorityCommon.ADD//新增
            + FunctionAuthorityCommon.EDIT//修改
            + FunctionAuthorityCommon.DELETE;//删除
                                             //+ FunctionAuthorityCommon.Save//保存
                                             //+ FunctionAuthorityCommon.Cancel;//取消
    }
}

可以使用的权限值:参考 WinFramework.UI.Core.FunctionAuthority

属性名称权限值
NONE没有任何权限0
FVIEW
访问权限,每个窗体都应该有1
ADD新增2
DELETE删除4
EDIT修改8
SaveEx保存16
SaveAndCloseEx保存后关闭64
APPROVAL审核32
PREVIEW打印预览128
Export导出256
CancelEx返回/取消512
Refresh刷新1024
EX_01
扩展权限2048
EX_02
扩展权限4096
EX_03
扩展权限8192
EX_04
扩展权限16384
EX_05
扩展权限32768
EX_06
扩展权限65536
ALL所有权限1073741823

4. 设置权限名称

在frmBaseChild 基类窗体中使用 SetAuthorizeName 方法来设置权限名称,frmBaseChild 中提供一个虚拟函数 InitAuthorize(),会在构造器中调用这个函数。

/// <summary>
/// 构造函数
/// </summary>
public frmBaseChild()
{
    InitializeComponent();
    //if (CheckDesingModel.IsDesingMode()) return;
    if (this.isDesignTime) return;
    this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
    _Buttons = new RibbonBarButtonCollection();
    this.Load += frmChildBase_Load;
    this.InitAuthorize();
}

/// <summary>
/// 初始化权限
/// </summary>
protected virtual void InitAuthorize()
{
    SetAuthorizeName(FunctionAuthorityCommon.FVIEW, "查看");
}

因此我们只需要重构 frmBaseChild 中的 IniAuthorize() 方法,就能修改权限名称了

protected override void InitAuthorize()
{
	base.InitAuthorize();
	// 设置Ex01的权限名称
	SetAuthorizeName(FunctionAuthority.EX_01, "布局调整");
}

5. 取消窗体的查看权限(不展示窗体)

WinFramework.UI.Dev.LibForm.frmBaseChild 中默认会给权限增加一个公共权限值=1,FunctionAuthorityCommon.FVIEW 访问权限。

/// <summary>
/// 查看
/// </summary>
internal const int FVIEW = 1;

C# 全选
/// <summary>
/// 当前窗体权限
/// </summary>
protected virtual int FormAuthorityAll
{
    get
    {
        return FormAuthority | FunctionAuthorityCommon.FVIEW;
    }
}

最后,我们重写该属性:

protected override int FormAuthorityAll => this.FormAuthority;

C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇