用sql数据库做个小程序,实现数据隔离,怎么控制?
发布网友
发布时间:2022-04-09 10:11
我来回答
共2个回答
热心网友
时间:2022-04-09 11:41
看了你的需求,首页区分下概念,分清哪些是数据库中的设置的,哪些是在程序中设置的。
第一个问题:
连接数据库时的登录名:就是登陆Sql Server的账号(sa为默认的最高权限);在sql中称为登陆名,可以在sql中新建登陆名,该登陆名可以设置sql的登陆权限,在新建登陆名时用户映射中,设置该登陆名可以访问的数据库名。登陆名包含了登陆权限(就是获取数据库权限的用户名)。登陆名下包含了服务器角色(批处理权限的角色)信息,一般有sysadmin(sa)、public(新建的、默认)等。
上述用户是sql中设置的信息,与程序无关。而程序使用的登陆用户名是在sql中新建一个数据库(AA),然后在数据库中在新建一张用户表(User),即你所说的用户表包含了序号(ID)、用户名(UID)、密码(PWD)、身份(LOGIN)4个字段。程序的登陆名只是User表中的一个字段(UID)。
第二个问题:
首要要更正你的观点,既然是程序里面要在登陆时要实现不同的身份查看不同的数据,那么所有的问题都由程序来做,与数据库无关。只不过在数据库AA里建立不同的表,存放不同的数据。因此总体设计如下:
1、建立sql数据库连接登陆名,只需要一个,用默认的sa也可以
2、建立数据库AA
3、建立各数据表。包括User表,User表中的用户名(UID)即程序登陆用户名
程序设计
4、程序建立与sql server的连接(即用1中新建的,sa也可以)
5、制作登陆验证程序。首页验证UID与PWD是否匹配,其次根据不同的LOGIN跳转不同的界面
6、在各自不同的界面调用所需要的数据
希望你能看明白!
热心网友
时间:2022-04-09 12:59
第一个问题:
建议将用户名拆分为:登陆名(账号)和用户名称,前者为登陆使用的账号,一般为英文字母+数字,后者为用户的中文名称;
取用户的权限时,可以使用登陆名,建议使用序号;
身份与角色/权限相关联,具体的关联方式还要看你的其他表结构;
程序使用的用户名,使用用户表记录的中文名称。
第二个问题:
数据访问的权限隔离,是通过你的应用程序来识别登陆账号(用户表的数据),然后判断该账号的身份,进而确定她/他能进行哪些操作,与数据库的用户名不是一个概念。这里的用户,对应的是用户表中的数据。