代码之家  ›  专栏  ›  技术社区  ›  My Other Me

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

  •  0
  • My Other Me  · 技术社区  · 14 年前

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

    我希望允许用户访问站点并自动进行身份验证。所以我在web.config中设置了authentication mode=“windows”,并在项目选项中启用了ntlm。当我运行这个站点时,它会在右上角显示我的域名,但是当我点击一个需要数据库访问的操作时,它会告诉我对我的用户名的访问被拒绝了?

    我缺了哪一步?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Tommy    14 年前

    这不一定是IIS或Windows身份验证问题。我想你的连接字符串应该是这样的

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

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

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

    Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
    
        2
  •  0
  •   belugabob    14 年前

    这就是身份验证和授权之间的微妙区别。

    身份验证是识别用户身份的行为(您已经完成了这一步) 授权是决定允许谁做什么的行为(您需要为每个用户/角色对数据库应用适当的访问权限)

    数据库访问权限的主题对于这个论坛的合理报道来说有点复杂,所以我建议您通过google等进行一些研究