Asp.net会员和角色自包含Web应用程序

时间:2010-11-10 23:38:05

标签: asp.net database security deployment

我需要在现有的ASP.Net 2.0 Web应用程序周围快速包装一些安全性。在考虑了一下之后,我记得微软在几年前创建了Membership和Roles范例,并且Visual Studio基本上可以为您创建一切。

因此,我使用内置的ASP.Net网站管理工具向前推进,并围绕应用程序创建了一个简单的小安全框架。设置完所有选项后,Visual Studio在我网站新创建的App_Data目录下创建了一个名为ASPNETDB.MDF的小型SQL Express数据库。在部署之前,这很有效。

在尝试将此应用程序推送到我的DEV服务器后,我意识到除非您在主机上安装了SQL Express,否则它无法运行。更糟糕的是,我认为在负载均衡的环境下基本上没有办法可行,因为DB本身只会被隔离到N个节点中的一个。

而不是将数据库编写脚本并将其推送到我现有的SQL框中......我想我会问StackOverflow是否有更好的解决方案来处理简单但安全的ASP.Net网站。

我很乐意维护现有的模型,但数据库已成为应用程序中的本地或平面文件数据库。暂时我甚至可以在每个用户或角色更改时部署平面文件,以抵消PROD中的负载平衡站点。

有没有办法用平面文件创建某种类似的设置?我认为这是App_Data文件夹的重点?

3 个答案:

答案 0 :(得分:1)

  
    

除非您在主机上安装了SQL Express,否则它不会起作用。

  

不一定。如果您仍想使用默认成员资格/角色提供程序,您可以在主机上安装数据库服务器,或者将数据库的一个实例作为单独的服务器(只需更改提供程序的连接字符串)。

  
    

更糟糕的是,我认为考虑到数据库本身只会被隔离到N个节点之一,在负载平衡环境下基本上没有办法可行。

  

在这种特殊情况下,这种说法并不正确。

使用负载平衡,您将不会拥有独立的数据库,而是一个单独的数据库服务器。

  

我很想保持现有的   模型还有数据库成为本地或平面文件DB烘焙权   进入应用程序。当时   因为部署这个,我甚至没事   每个用户或角色的平面文件   改变以抵消负载平衡   PROD的网站

如果您说具有正确SQL DB的应用程序无法扩展,我不明白平面文件存储的方式。

您仍然可以保留本地SQL Server数据库,只要您负责维护不同节点之间的数据库一致性,它就能正常工作。

在您的情况下,我会像您现在一样亲自使用默认会员/角色提供程序。 但是在部署时,只需将连接字符串更改为正确的数据库服务器。

无论如何,您将需要一个用于其他内容的数据库,因此为什么不对所有包含该应用程序的数据使用相同的数据库(包括成员资格/角色)。

问候。

答案 1 :(得分:1)

您可以使用自定义角色&支持平面文件的成员资格提供程序,如XML。这是一个XML成员资格提供程序的链接,我见过类似的Roles实现。

XML Membership Provider

答案 2 :(得分:0)

我在这里找到了一个很好的解决方案... http://aspnetxmlproviders.codeplex.com/。使用动态XML,您可以立即破解基于提供程序的简单安全模型。