切换到Windows身份验证模式后,使用ASP.Net MVC应用程序拒绝数据库访问

时间:2010-04-12 10:18:22

标签: asp.net-mvc authentication authorization

我有一个MVC应用程序,我现在正在尝试添加身份验证和授权。

我希望允许用户访问该网站并自动进行身份验证。所以我在web.config中设置了身份验证模式=“Windows”,并在项目选项中启用了NTLM。该网站现在在我运行时在右上方显示我的域名,但是当我点击一个比需要数据库访问权限的操作时,它会告诉我我的用户名被拒绝访问?

我错过了哪一步?

2 个答案:

答案 0 :(得分:1)

这不一定是IIS或Windows身份验证问题。我假设您的连接字符串看起来像这样

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

现在您正在使用Windows身份验证,域\用户名将被传递给SQL以对数据库进行身份验证。如果您没有将整个域(或至少登录到您的应用程序的子集)作为SQL中的有效用户,那么您将获得未经授权的异常。您需要a)在连接字符串中将用户名/密码传递给SQL,如下所示;或b)将应用程序的用户添加到数据库的安全用户或c)使用web.config文件中的impersonate属性进行模拟有权访问Web服务器和数据库上的应用程序文件的用户

带有用户名/密码的SQL连接字符串

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

答案 1 :(得分:0)

这是身份验证和授权之间的细微差别。

身份验证是识别用户身份的行为(并且您已完成此操作) 授权是确定允许谁做什么的行为(您需要为每个用户/角色对数据库应用适当的访问权限)

数据库访问权限的主题对于此论坛的合理覆盖有点复杂,所以我建议您通过Google等进行一些研究