【发布时间】:2011-10-27 06:56:22
【问题描述】:
当用户尝试在我的 ASP MVC 3 应用程序中通过 Windows 身份验证连接到 SQL Server 数据库时,使用以下连接字符串:
<add name="btnintranetContext" connectionString="Data Source=BTN-SERVER;Initial Catalog=Intranet;Integrated Security=SSPI;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
他们得到以下错误:
Cannot open database "Intranet" requested by the login. The login failed.
Login failed for user 'User'.
我明白这意味着什么,这意味着我没有授予该用户访问数据库的权限,但我希望用户能够访问该数据库,而不必授予他们所有访问权限。我尝试在我的连接字符串中指定一个特定的数据库用户,如下所示:
<add name="btnintranetContext" connectionString="Data Source=BTN-SERVER;Initial Catalog=Intranet;User Id=mylogin;Password=mypassword;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
但我收到一个新错误:
Login failed for user 'mylogin'.
The provider did not return a ProviderManifestToken string.
但我确定 mylogin 可以访问数据库,因为当我尝试使用 Windows 身份验证连接字符串访问数据库时,它可以工作。但是出于安全原因,我不想让使用我的应用程序的每个人都可以访问数据库,这就是我尝试在连接字符串中指定用户的原因。
来自我的 web.config 文件的其他信息:
<authentication mode="Windows" />
<identity impersonate="true" />
<trust level="Full"/>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
【问题讨论】:
标签: sql-server asp.net-mvc-3 connection-string windows-authentication