连接有密码的Access数据库
点击次数:100 次 发布日期:2008-11-06 08:12:49 作者:源代码网
|
我们在第2章的很多示例中都使用了Access。回想一下我们没有涉及到连接字符串或者提供程序;我们只是使用了AccessDataSource控件并提供了MDB文件的路径和名称。但是再回想一下我们曾告诫您在具有安全模式的Access安装中将无法正常工作。问题很简单:在使用AccessDataSource控件的时候,没有属性(或者底层机制)可用来发送用户ID或者密码。原因是Microsoft想鼓励将敏感数据(例如用户名称和密码)保存在Web.config文件中,可以很好地受到保护和/或者加密。通过使用SqlDataSource控件(用OLEDB提供程序)来连接受保护的Access数据库文件,这个选项就可以启用了。可以将证书指定为连接字符串的一部分,并将连接字符串保存在Web.config中。 这不是一本专门讲述Access的书。在安装安全模式之前,请确认您已经完全了解Access的安全。明智的做法是,对未受保护的MDB进行备份直到您确定您的安全协议工作正常。应用于Access的安全规则是不可逆的,可能需要重新安装软件。 以安全模式连接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_DataMyFile.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_DataMyFileWithPassword.mdb; Persist Security Info=True; User ID=MyuserId; Password=MyPassword; Jet OLEDB:System Database=~DataSecurity.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:WebsitesBegAspNet2DbApp_Data文件夹中,创建Northwind的一份副本,名为NorthwindPass.mdb。在Access 2003中,打开NorthWindPass为单独使用,如下所示。依次单击File->Open并浏览C:WebsitesBegAspNet2DbApp_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_DataNorthWindPass.mdb; Persist Security Info=True; Database Password=north56wind" /> </connectionStrings> (3) 创建名为C:WebsitesBegAspNet2DBch04的文件夹并在其中创建名为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:websitesegaspnet2dbApp_DataNorthwindPass.mdb; User ID=MyID; Password=MyPassword;" 除了这四点语法区别之外,这个连接与第2章的相同。 试一试 #2—— 以用户组安全连接MDB文件 现在我们来创建使用用户级安全的Access数据库,并用ASPX页面与其连接。 (1) 打开Windows Explorer,在其中创建 C:WebsitesBegAspNet2Db 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="Microsoft.Jet.OLEDB.4.0" ; Data Source="C:WebSitesBegAspNet2DbApp_DataNorthwindWork Group.mdb" ; Persist Security Info=True; User ID=aspxpage; Password=north78 wind ; Jet OLEDB:System Database=C:WebSitesBegAspNet2DbApp_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文件中指定正确的连接字符串。 源代码网推荐 源代码网供稿. |
