网上资料说权限设计=功能权限+数据权限,我认为还是很有道理的

网上资料说权限设计=功能权限+数据权限,我认为还是很有道理的

2、用户权限管理,数据库表设计,第1张

网上资料说权限设计 = 功能权限 + 数据权限,我认为还是很有道理的。之前项目中只涉及到功能权限,没有数据权限,原因是最开始设计时,数据已经绑定在特定的用户下了,而且涉及到的表数量很少,不需要单独考虑数据权限的问题。

权限管理,最细致的权限管理有 用户,用户组用户角色权限表设计,角色,权限,功能。根据不同的需求适当选择,如 用户量过大地图场景,每个人都授权和麻烦,就引入用户组,对用户组赋予权限。功能上也根据业务不同做适当的扩展。由于如用户权限之前存在多对多关系,需要引入中间表。

本系统设计如下:

数据量很小,功能也不复杂,所以只有用户用户角色权限表设计,角色,权限(功能)及产生的中间表。

表中的数据都是提前填的,用户登陆,查ermroleuser表,获取角色,查ermrolefunction表,获取功能,再查ermfunction表,返回该用户的功能的中文,在页面上展示。

功能权限详细设计请参考,本项目也是受此启发:

需求:给一个原来没有权限的数据配置系统加上登录,权限功能,不同角色查同一张表返回结果不同。

思路:所谓数据权限,关注点在于实体属性值、条件、允许值,用户登录后,查询该用户的查询条件,根据条件获取数据即可。详细表结构设计可以参考:

具体介绍一下每个字段含义:

(1)主键 id;

(2)acl_id 映射权限点表主键,代表每行记录是针对哪个权限点的;

(3)status 代表当前这条配置是否有效,方便临时激活与禁用;

(4)param 代表需要校验的参数名,允许一个请求有多个参数参与数据校验;如果参数复杂,比如包含对象,定义的参数可能为a.b.c 这种多级的形式,建议不要太复杂

(5)operation 代表数据拦截的规则,使用数字代表是等于、大于、小于、大于等于、小于等于、包含、介于之间等,可以根据自己需要增加或减少支持的拦截规则

(6)value1 和 value2 用来和param、operation组成一个关系表达式,比如:1<=a<2

next_param_op 字段根据需要使用,如果一个权限点支持多条数据规则时,连接两个规则之间的 *** 作,|| 还是 &&

(7)seq 字段用于某个权限点包含多条数据权限规则时的顺序

假设有这么一条数据,那么他的含义是:id为1(acl_id)的权限点,配置了一条有效(status=1)的数据规则,规则是:传入参数id(param)的值要大于(operation)10(value1)

这种设计很细致了,当然我的项目没有那么复杂,所以最终没有采用这个。

讲述了数据权限设计的演化过程。

本系统跟权限相关的表结构如下:

代码如下:

string uname = this.txtUsername.Text//得到登陆帐号

string pwd = this.txtPassword.Text//得到登陆密码

SqlConnection sqlCon = new SqlConnection()//创建数据库连接对象

//初始化该对象的连接字串

sqlCon.ConnectionString

ConfigurationManager.ConnectionStrings["strConn"].ConnectionString

sqlCon.Open()//打开数据库连接

SqlCommand sqlComGet = new SqlCommand()//创建SqlCommand对象

sqlComGet.Connection = sqlCon//用sqlCon初始化SqlCommand对象

sqlComGet.CommandText = "select * from TUser where UserName='" + uname + "' and UserPwd='" + pwd + "'"

SqlDataReader sqlDr = sqlComGet.ExecuteReader()//创建SqlDataReader对象

if (sqlDr.Read()) //帐号和密码正确

{ Session["UserID"] = sqlDr["UserID"]

Session["UserEmail"] = sqlDr["UserEmail"]

Session["UserName"] = uname//用Session记录帐号

Session["UserPwd"] = pwd//用Session记录密码

Response.Redirect("Default.aspx")

}

else //帐号或密码错误

{

this.lblResults.Text="您输入的用户名或密码不正确!"

}

sqlCon.Close()

ASP.NET又称为ASP+,不仅仅是ASP的简单升级,而是微软公司推出的新一代脚本语言。ASP.NET基于.NET Framework的Web开发平台,不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色,同时也修正了以前的ASP版本的运行错误。

语言特点:

(1)多语言支持

多语言支持是ASP.NET的重要新特性之一,主要表现在所支持的编程语言种类多和单个语言功能强两个方面。

(2)增强的性能

在ASP.NET中,页面代码是被编译执行的,它利用提前绑定、即时编译、本地优化和缓存服务来提高性能。当第一次请求一个页面时,cLR对页面程序代码和页面自身进行编译游戏运营,并在高速缓存cache中保存编译结果的副本。当第二次请求该页面时,就直接使用cache中的结果(无需再次编译)。这就大大提高了页面的处理性能。

(3)类和名空间

ASP.NET包含一整套有用的类和名空间(Namespaces)。名空间被用做一种有组织的机制--一种表示可用于其他程序和应用的程序组件的方法。名空间包含类。和类库一样,名空间可以使Web应用程序的编写变得更加容易。HtmlAnchor、HtmlContrl以及HtmlForm是ASP.NET中的几个类,它们被包含System.web.UI.HtmlControl空间中。

(4)服务器控件

ASP.NET提供了许多功能强大的服务器控件,这大大简化了web页面的创建任务。这些服务器控件提供从显示、日历、表格到用户输入验证等通用功能,它们自动维护其选择状态,并允许服务器端代码访问和调用其属性、方法和事件。因此,服务器控件提供了一个清晰的编程模型,使得Web应用的开发变得简单、容易。

文章来源:https://outofmemory.cn/sjk/9947435.html