我使用Asp.net MVC 4.0和LocalDB构建了一个表单身份验证(实际上我正在使用新的单页面应用程序)网站。我想为访问数据库的服务层创建一个单独的类lib项目。我需要将默认的帐户/身份验证表与我自己的表集成。
问题:
如果我将LocalDB文件放在服务项目下,是否需要修改系统生成的帐户登录代码。如何让身份验证代码通过服务层而不是默认的DBContext访问数据库?
答案 0 :(得分:2)
这种模式很常见,主要控制和理解点是IIS和安全性。 值得一看的是MSDN IIS网站对这个话题充满信心。 http://msdn.microsoft.com/en-us/library/aa292471%28v=vs.71%29.aspx
1)SQL server DB的位置无关紧要。 SQL Server实例所在的位置确实起作用。如果它在同一个域/ AD中,那么使用Windows集成安全性登录到数据库效果很好。 2)如果连接到SQL的用户标识是数据库实例上的有效用户,并且具有底层数据库的必要权限,则可以访问数据。
3)这段代码是什么?
有许多问题需要回答/考虑。
a)您是否在IIS中使用FORMS登录或Windows集成登录? b)是否要使用服务用户访问数据库,或者让每个用户在Db中分配。 c)您的应用程序的安全模型是什么。
另见http://leastprivilege.com/category/net-security/ Dominick Baier安全博客。
作为示例解决方案,(不是唯一的解决方案)。
因此,您将使用 System.Environment.UserName 作为您在网站后面的应用程序池中设置的系统用户。 然后根据需要管理您的应用程序安全性。 一旦你到达.net 4.5,索赔主体是一种“新方式” 但是你保持这里所要求的简单。 Thread.CurrentPrincipal.Identity.Name 将包含基于表单的用户的名称。
祝你好运......