这种模式很常见,主要的控制和理解点是 IIS 和那里的安全性。确实值得一看 MSDN IIS 站点,以便对这个主题充满信心。
http://msdn.microsoft.com/en-us/library/aa292471%28v=vs.71%29.aspx
1) SQL server DB 的位置无关紧要。SQL 服务器实例所在的位置确实起作用。如果它在同一个域/AD 中,那么使用 Windows 集成安全登录到数据库效果很好。2)如果连接SQL的userid是数据库实例上的合法用户,并且拥有底层数据库的必要权限,那么您就可以访问数据了。
3)这个代码是什么?
有许多问题需要回答/考虑。
a) 您是在 IIS 中使用 FORMS 登录还是 Windows 集成登录。b)您想使用服务用户访问数据库,还是让每个用户在数据库中分配。c) 您的应用程序的安全模型是什么。
另请参阅http://leastprivilege.com/category/net-security/ Dominick Baier 安全博客。
作为示例解决方案,(不是唯一的)。
- 您可以在 IIS 中设置网站以使用 FORMS 身份验证
- 在 IIS 中设置网站使用的应用程序池以使用特定的 Service 用户。您在 IIS 应用程序池中键入用户 ID 和密码。您必须首先在域上创建此用户。为它分配尽可能少的权利。
- 将此服务用户添加到 SQL 服务器,并在应访问的数据库中为其提供足够的权限。(2 个步骤)因此服务用户可以访问数据库,但几乎没有其他操作。
因此,这会让您使用System.Environment.UserName 作为您在网站后面的应用程序池中设置的系统用户。然后按照您认为合适的方式管理您的应用程序安全性。进入 .net 4.5 后的索赔本金是一种“新方式”。
但是你在这里保持尽可能简单。
Thread.CurrentPrincipal.Identity.Name 将包含基于表单的用户的名称。
祝你好运...