以安全模式连接ACCESS (MDB)数据库

以安全模式连接MDB

如果Access的安全模式已经建立,就必须使用一种允许在连接字符串中传递登录信息的连接技术。在Beta2中,ODBC通用提供程序就是最佳选择(对软件的最终版本来说,还是期望OLEDB解决方案)。与第2章使用的连接MDB文件的技术相比,有如下四个区别:

● 使用了SqlDataSource控件。

● 使用了通用OLEDB提供程序和本地JET提供程序。

● 在连接字符串中包含了UserID和Password属性。

● 在某些情况下,包含了用户组安全文件的名称。

Access具有两种安全类型。一个是所有用户都可使用的简单的数据库密码,可以通过Access中的Tool->Security->Set Database Password来指定密码。对这种配置来说,只要在连接字符串中包含Database Password属性并将连接字符串放入Web.config文件即可,如下所示。ASPX页面上的属性也在随后给出。

<add name="NorthwindConnectionString"

connectionString=" Provider=Microso£t. Jet. OLEDB .4.0;

Data Source=~/App_Data/MyFile.mdb;

Persist Security Info=True;

Database Password=MyPasswordForTheDatabase;

providerName="System.Data.OleDb" />

Access还提供了用户级安全,允许用户的定义并可以将访问数据库的特定对象的许可授予用户。如需配置这种类型的安全,可以依次运行MS Access中的User-Level Security Wizard来创建用户组信息文件。这个文件定义了允许特定数据库(或可选的所有数据库)的用户和许可。一旦在Access中创建了这个用户组文件,可以切换至VWD并指定用户组文件的路径为Jet OLEDB:连接字符串中的System Database属性,以及用于连接数据库的特有的证书(用户ID和密码),如下所示(同样地,用于Web.config文件)。请注意数据MDB文件和以.MDW为后缀名的相关安全文件都在连接字符串中定义。

<add name="NorthwindConnectionString"

connectionString=" Provider=Microsoft. Jet. OLEDB .4.0;

Data Source=~/App_Data/MyFileWithPassword.mdb;

Persist Security Info=True;

User ID=MyuserId;

Password=MyPassword;

Jet OLEDB:System Database=~/Data/Security.mdw

providerName="System.Data.OleDb" />

作为对第3章的回顾,回忆一下您接着在ASPX页面上使用了如下语法:

<asp:SqlDataSource ID="SqlDataSourcel" Runat="server"

ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString %>"

SelectCommand=" ... ">

</asp:SqlDataSource>

同样地,本文不是专门讨论在Access中安装安全模式,但是如果有模式存在,那么您可以按照在前面段落中描述的那样连接数据库文件。

试一试 #1—— 用密码连接Access MDB

在添加Access安全模式之前,应当了解一下数据库安全的理论知识。安全模式可以防止使用MDB文件中的数据,甚至防止从Access打开任何MDB文件。如果使用安装在不用于生产MDB的机器上的Access,那么犯错误的可能性将会降低。

(1) 在C:/Websites/BegAspNet2Db/App_Data文件夹中,创建Northwind的一份副本,名为NorthwindPass.mdb。在Access 2003中,打开NorthWindPass为单独使用,如下所示。依次单击File->Open并浏览C:/Websites/BegAspNet2Db/App_Data文件夹。单击NorthWindPass。观察右下角Open按钮现在有一个下拉选项。展开Open按钮并单击Open Exclusive。通过单击Tools->Security->Set Database Password来添加密码。我们将使用north56wind。关闭MDB文件并重新打开以检查是否需要密码。关闭NorthWindPass.MDB并关闭Access。

(2) 接下来,添加连接字符串至Web.config文件,如下所示:

<connectionStrings>

<add name="AccessNorthwindPassword"

providerName="System.Data.OleDb"

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=~/App_Data/NorthWindPass.mdb;

Persist Security Info=True;

Database Password=north56wind"

/>

</connectionStrings>

(3) 创建名为C:/Websites/BegAspNet2DB/ch04的文件夹并在其中创建名为TIO- 1-AccessPassword.ASPX的页面。在Source视图中,添加SqlData Source控件(不是AccessDataSource)并将其连接至Web.config中初期的连接字符串。设置选择命令从Customers表中读取消费者ID和姓名。添加GridView来显示这些值。保存页面,页面如下所示,并在浏览器中查看。

<body>

<form id="forml" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSourcel" Runat="server"

ConnectionString="<%$ connectionStrings:NorthwindConnectionString %>"

SelectCommand=" SELECT CustomerID, Name FROM Customers">

</asp:SqlDataSource>

 

<asp:GridView ID="GridViewl" Runat="server"

DataSourceID="SqlDataSourcel"

AutoGenerateColumns=true

>

</asp:GridView>

</div>

</form>

</body>

示例说明 #1—— 用密码连接Access MDB

与第2章的无密码的示例相比,在数据源控件中有四个关键的变化。第一个是在ASPX页面中。使用SqlDataSource而不是AccessDataSource的原因是因为AccessDataSource不接受连接字符串(只接受路径和文件名称)。而我们需要连接字符串来提交登录信息。

<asp:SqlDataSource …

现在将注意力转向Web.config文件。第二,SqlDataSource的默认提供程序是Microsoft SQL Server,所以您必须重写这个默认值。在本例中,指定另外的提供程序为通用OLEDB提供程序。

ProviderName="System.Data.Oledb"

第三,您使用通用的提供程序(OLEDB)。这意味着它只是将工作委托给本地的提供程序。因此,在连接字符串中,必须指定哪个本地提供程序将执行实际的工作。

ConnectionString="

Provider=Microsoft.Jet.OLEDB.4.0;

最后,您提供连接字符串所需的常规值,包括MDB的路径和名称、用户ID和密码。

Data Source=c:/websites/begaspnet2db/App_Data/NorthwindPass.mdb;

User ID=MyID;

Password=MyPassword;"

除了这四点语法区别之外,这个连接与第2章的相同。

试一试 #2—— 以用户组安全连接MDB文件

现在我们来创建使用用户级安全的Access数据库,并用ASPX页面与其连接。

(1) 打开Windows Explorer,在其中创建 C:/Websites/BegAspNet2Db/ App_Data/ Northwind.mdb的一份副本并将其命名为NorthwindWorkgroup.mdb。在Access 2003中打开这个新文件。单击Tools|Security|User-Level Security Wizard并执行如下步骤:

● 创建新的用户组文件,单击Next,将其作为默认用户组文件,并再次单击Next。

● 允许验证所有的对象,单击Next,将Full Data Users组添加至文件,并再次单击Next。

● 不要对Users组授予权限并单击Next。添加新的用户,名为“aspxpage”,密码为“north78wind”,并且一定要单击“Add this user to list”按钮,然后单击Next。

● 下拉列表选择Select aspxpage并将其赋给Full Data Users组;单击Next和Finish。

您可以保存和/或者打印安全设置报告,但是本练习不要求这么做。关闭MDB和Access,然后打开NorthwindWorkgroup并提供aspxpage和north78wind证书,测试您的安全模式。

(2) 切换至VWD并添加连接字符串至Web.config文件,如下所示:

<add name="AccessNorthwindWorkgroup"

connectionString="Provider=&quot;Microsoft.Jet.OLEDB.4.0&quot; ;

Data Source=&quot;C:/WebSites/BegAspNet2Db/App_Data/NorthwindWork Group.mdb&quot; ;

Persist Security Info=True;

User ID=aspxpage;

Password=north78 wind ;

Jet OLEDB:System Database=C:/WebSites/BegAspNet2Db/App_Data /Security.mdw"

providerName="System.Data.OleDb" />

(3) 创建名为TIO-2-AccessWorkgroup.aspx的文件。添加使用了Web.config文件中的AccessNorthwindWorkgroup连接字符串的SqlDataSource。添加GridView显示信息,如下所示。保存并在浏览器中进行测试。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtmlll/DTD/xhtmlll.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Ch04-Tio2-AccessWithWorkgroup</title>

</head>

<body>

<h2>Chapter 04 Tio #2 Access With Workgroup</h2>

<form id="forml" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSourcel" runat="server"

ConnectionString="<%$ ConnectionStrings :AccessNorthwindWorkgroup %>"

ProviderName="<%$

ConnectionStrings:AccessNorthwindWorkgroup.ProviderName %>"

SelectCommand="SELECT[ProductID],[ProductName]FROM[Alphabetical

List of Products]">

</asp:SqlDataSource>

<asp:GridView ID="GridViewl" Runat="server"

DataSourceID="SqlDataSourcel"

AutoGenerateColumns=true

>

</asp:GridView>

</div></form></body></html>

示例说明 #2—— 以用户组安全连接MDB文件

Access 2003支持两种安全模式类型。上一个练习演示了简单的密码。在本练习使用的模式中,首先创建了用户和组,然后授予特定的权限。这些证书都保存(当然也加密)在名为Security.mdw的文件中。在对Northwind创建了名为NorthWindWorkgroup的副本之后,执行了安全向导程序。本文并不是介绍Access安全,但是如果您执行了以上步骤,最后您将得到一个名为aspxpage、密码为north78wind的新用户,并且该用户在Full Data Users组当中。

在Web.config中添加了连接字符串,该字符串与上一个练习相比有三方面的不同。第一,您指定了用户名。第二,现在的Password属性引用了指定用户的密码,而不是上一个练习中的一般数据库密码。第三,指定了安全文件的位置。

回到ASPX页面中,您要做的事情不多。回想一下您使用的是SqlDataSource而不是AccessDataSource,所以可以指定能够传递证书的OLEDB提供程序。然后只要从Web.config文件中指定正确的连接字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值