C#使用安全权限验证 ADO.NET 代码访问

来源:互联网 发布:八年考研三年模拟淘宝 编辑:程序博客网 时间:2024/05/08 11:01
 

对于部分受信任方案,可以通过指定所需的 SqlClientPermissionAttribute 属性,将您代码中的特定方法标识为需要特定的代码访问安全特权。如果不允许您的代码使用该特权,那么在运行代码之前将引发异常.由于对部分受信任方案没有启用 OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序,因此,虽然在测试是否有特定的特权时可能会成功,但代码在执行时将会失败,并引发 SecurityException

例如,以下代码显示一个标识为需要特定连接字符串的方法。如果不允许该连接字符串,将引发异常,方法也得不到执行。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Security;
using System.Security.Permissions;

public class Sample
{

  [SqlClientPermissionAttribute(SecurityAction.Demand, ConnectionString = " Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")]
  private static void OpenConn()
  {
    SqlConnection testConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    testConn.Open();
    Console.WriteLine("The calling method has been granted sufficient permission to access the database.");
    testConn.Close();
  }

  public static void Main()
  {
    try
    {
      OpenConn();
    }
    catch (SecurityException)
    {
      Console.WriteLine("The calling method has not been granted sufficient permission to access the database.");
    }
  }
}

原创粉丝点击