在Winfrom窗体设计中的角色权限赋予以及探索的思路及实现

Posted qzdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Winfrom窗体设计中的角色权限赋予以及探索的思路及实现相关的知识,希望对你有一定的参考价值。

一、绪论

在2020年Dotnet技术日益完善的今天,我们熟知的Dotnet 开发体系有WinForm、 WebFrom、Asp.net、WPF、以及现在正火的Dotnet Core以及Microsoft将要推出的Dotnet 5。总的来说这些开发技术我都用过,今天我想到了一个问题,在WinForm中怎样做到权限分配?当然,因为我主要是写B/S的的,像WinFrom这种窗体发开的以前写过,这段时间不写了。今天写Identity Server 4的时候想到了如何在这种不依赖框架的技术上做权限分配。

二、选题背景

? 我的选题很简单,是一个烂透了的选题“图书管理系统”,角色我暂定只有两个,也是那两个在这个系统里面不可或缺的角色,“管理员”和“用户”。具体流程的话我就不赘述了,已经烂大街了。

三、核心需求

这个选题和大家接触过的需求没有太大出入,无非也就是书籍管理、信息管理、借阅管理等。那么这个的核心需求是什么呢?

我期望在系统指定了只能有读者和管理员这两个角色之外,我可以给这些人(不区分角色)分配一些权限。

  • 这个场景的话,就简单想像成管理员是老师身份,而读者统一都是学生群体,但是在这些学生中有一些同学参加勤工俭学向学校“打工”赚取零花钱,所以管理图书馆的主管老师可以给这些学生相应的权限,来辅助老师。

  • 至于管理员用不用给他也来个权限的管理呢?当然要来啊,因为本系统中权限最大,最全的管理员是主管图书馆的那位老师,而别的老师虽是老师,但是只是管理其相应的教学任务,不涉及图书馆的工作,但是也可能会有一些老师可能因为工作原因需要图书馆的部分权限,所以需要给管理员身份来一个权限管理。

四、实现思路

  • 角色实体的分析
  • 权限如何管理
  • 如何在使用者登录之后限制其权限

五、具体实现

1. 角色实体

具体看图

技术图片

2. 权限如何管理

这个的话我是在实体类里面进行区分,具体看代码

技术图片

  • 根据userSort来判断其角色(为什么没有单独的弄两张表的原因是,我考虑到有的学生可能留校成为老师,还有一个原因是,如何使用两张表的话,判断身份就要多些几行代码,懒得弄了。。)

  • 关于权限的赋予,我是在数据库那边设计一个字段专门存放角色权限,具体看图

技术图片

技术图片

因为已经知道了系统具体有哪些权限可赋予,那么设计一个字符串型字段,通过区间指定相应权限

3、如何在程序运行中保持用户信息

我们都知道在B/S架构中,一般使用的是Cookie Session Token,我仿照Session的思路,用户登录成功后将用户的实体信息存放到一个"Session"中

技术图片

这个是用户登录的代码

技术图片

4、如何“跨域”

用“跨域”这俩字,就有点扯淡了。。但是暂时想不来有啥更好的,暂定用这个词吧。。。

技术图片

5、检查的相应的代码

技术图片

6、权限视图设计

技术图片

这是设计的权限界面

如何修改呢?

技术图片
技术图片
技术图片



以上是关于在Winfrom窗体设计中的角色权限赋予以及探索的思路及实现的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中如何创建一个角色并把角色赋予指定账户

SQL SERVER 建好了,如何创建用户以及赋予所有权限?

winfrom 基类窗体与子类窗体load事件详解

winfrom 子窗体调用父窗体中的方法

RBAC 介绍 (权限)

winfrom窗体的透明度