to 楼主 我对的第一个办法跟他的办法差不多。但是你看见第二个办法了吗?那个办法不同了吧?还有,第一个办法,我觉得是你自己的业务逻辑的问题。因为那要看你客户到底是干什么的?为什么访问数据。对一个办法还有一个改进,就是自己建一个ConnectionBuilder类,做成webservice,当客户访问是,先去调用webservice,然后由webservice调用ConnectionBuilder,最后返回一个连接字符串给用户。这样,你想什么时候改密码就什么时候改密码。不需要更改客户端。不过,对于安全性,就要考虑考虑了。可以返回一个dataadapter对象给他。^_^
中间层我也想过,使用webservice?但是问题也出现了,维护起来多了一步。
qqqdong()
你这种方式肯定不行,万一服务器改一下密码我还不得重新安装所有的客户端?
楼主所讲的这样一个问题,我觉得应该从数据库的涉及着手解决。你可以建一个用户表,里面放上密码、用户名以及权限ID,然后有一个权限表,里面有具体权限和权限ID,将两个表联系起来,这样,用户的等级和权限的更改都非常的方便。还有一个办法就是用XML,用xsd来限制用户对数据的使用,你可以建一个用户表,每个表一个权限ID,通过查询用户的权限ID来使用不同的预先定制的XSD架构文件。以上两种方法都可以做到您想要的结果。
turnmissile 你这种方式只适用于asp.net
Reeezak(奋斗) 你这种方式和qqqdong没什么区别呀。
方法二:在SQLServer上对用户的权限进行限制。个人看法:认为楼主想出在sqlserver上做限制的方法不是最好,因为这样从用户使用或者管理的角度上说,负担很重,而且未必能够取得很好的效果。认为比较妥当的一种做法,即结合我说的方案一,同时设定一个有权访问sqlserver的公共帐户,但是该帐户不是该数据库的所有者,然后所有的数据连接都基于这个帐户。这样做的话,主要是考虑到应用程序与数据库的无关性,管理起来也比较方便。如果采用sqlserver权限的话根本上仍然无法杜绝未经许可的用户查询数据库,所以偶认为那种做法是徒劳的。
我对的第一个办法跟他的办法差不多。但是你看见第二个办法了吗?那个办法不同了吧?还有,第一个办法,我觉得是你自己的业务逻辑的问题。因为那要看你客户到底是干什么的?为什么访问数据。对一个办法还有一个改进,就是自己建一个ConnectionBuilder类,做成webservice,当客户访问是,先去调用webservice,然后由webservice调用ConnectionBuilder,最后返回一个连接字符串给用户。这样,你想什么时候改密码就什么时候改密码。不需要更改客户端。不过,对于安全性,就要考虑考虑了。可以返回一个dataadapter对象给他。^_^
您这种办法,假如用户在服务器上更改了您使用的用户的密码.那所有的客户端岂不是都不能使用了?另外,我这边sql server中有一个历史纪录,这个历史纪录是使用触发器生成的,这时候我得记录谁触发的这个事件,所以不能使用一个用户名进行登录。在说,如果使用一直使用一个用户名进行登录的话,sql server中的安全性就没有什么安全性所言了,你使用的那个用户的密码就是一切.如果都这样的话,那数据库根本就没有必要设置什么用户/角色了,难道microsoft没事干做这些没用的东西?可能我现在思路走到了误区,没办法。:)
尤其是在PB的程序中,多采用这样的方法。
lhx1977(清水无鱼) 我也有此想法,想来想去也只有这种方式了。但是另外的问题是,我使用的另外一个模块早已经做好了,而且咱们没有源代码,我没法改:(
通过中间层获取数据库的连接。以前我是用VB写COM+处理的,现在用.net更容易了。