如何让不同的用户访问数据时只能看到属于自己权限的数据(不用SELECT语句,并且这个用户不是SQLSERVER中的用户,而在我建的一张表里)

TGITCIC
Java领域优质创作者
博客专家认证
2007-07-31 12:31:09
比如说A,B,C三个用户

每个用户属于于两个属性 "市场","品牌"中的一个

根据这两个属性,会建一些表

要做到每个用户登录后,比如说A的发生是"市场",他就只能看到"市场"的数据,而不能看到"品牌"的数据,前题是不用SELECT语句,而只用数据库自身实现该功能?
...全文
402 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
在路上_- 2007-08-04
  • 打赏
  • 举报
回复
1. 创建A、B、C三个数据库用户
2. 创建"市场","品牌"两个数据库角色
3. 把数据表的访问权限付给角色
4. 使用户隶属于某个角色
yjlhch 2007-08-03
  • 打赏
  • 举报
回复
学习
ljs1519 2007-08-03
  • 打赏
  • 举报
回复
不理解楼主为什么要这么做
hb_gx 2007-07-31
  • 打赏
  • 举报
回复
并且这个用户不是SQLSERVER中的用户,而在我建的一张表里
-----------------------------------------------------
LZ的意思其实很矛盾,如果这个用户不是SQLSERVER中的用户,那么他是如何登录到SQLSERVER中的?他只能通过前台的程序来访问数据库,难道他可以直接在前台写任意的SQL语句进数据库内执行吗?
这个就有点奇怪了?不明白?
望LZ能继续解释

hb_gx 2007-07-31
  • 打赏
  • 举报
回复
LZ 居然发这么多帖子

那我在说一种好了

根据这两个属性,会建一些表
--------------------------

比如说你有 table1 这个表
里面包含两个字段 t1 和 t2 ,t1属于市场,t2属于品牌

A用户属于市场
B用户属于品牌

那么A 的权限
DENY SELECT ON [dbo].[table1]([t2]) TO [A]

B 的权限
DENY SELECT ON [dbo].[table2]([t1]) TO [B]

这样B不能SELECT到t1这个字段,A不能SELECT到t2这个字段

当然如果限制再严格一点,那么
DENY INSERT ON [dbo].[table1]([t2]) TO [A]
DENY DELETE ON [dbo].[table1]([t2]) TO [A]
DENY UPDATE ON [dbo].[table1]([t2]) TO [A]


对于其他的表也是一样的控制,LZ应该能明白吧
xiaoku 2007-07-31
  • 打赏
  • 举报
回复
而且还不是 用户的user ...
不行的. sql server 没有那么强...
TGITCIC 2007-07-31
  • 打赏
  • 举报
回复
该用户不是在SQLSERVER里的USER,而是我建在一个叫tbluser表里的用户
zxkid 2007-07-31
  • 打赏
  • 举报
回复
你让用户直接进数据库中操作吗?真是很怪的想法
hb_gx 2007-07-31
  • 打赏
  • 举报
回复
又想了一下,今天没事情做想问题也是很快的

LZ在数据库里建两个用户,A,B
两个的权限是不一样的,就像我上面说的那样给权限

前台定义两条连线,
connection1 使用A用户登录数据库
connection2 使用B用户登录数据库

登录的时候判断从数据库某表中取出的用户属于市场还是品牌
根据他的属性决定程序中使用那个connection

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧