我需要在现有的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文件夹的重点?
答案 0 :(得分:1)
除非您在主机上安装了SQL Express,否则它不会起作用。
不一定。如果您仍想使用默认成员资格/角色提供程序,您可以在主机上安装数据库服务器,或者将数据库的一个实例作为单独的服务器(只需更改提供程序的连接字符串)。
更糟糕的是,我认为考虑到数据库本身只会被隔离到N个节点之一,在负载平衡环境下基本上没有办法可行。
在这种特殊情况下,这种说法并不正确。
使用负载平衡,您将不会拥有独立的数据库,而是一个单独的数据库服务器。
我很想保持现有的 模型还有数据库成为本地或平面文件DB烘焙权 进入应用程序。当时 因为部署这个,我甚至没事 每个用户或角色的平面文件 改变以抵消负载平衡 PROD的网站
如果您说具有正确SQL DB的应用程序无法扩展,我不明白平面文件存储的方式。
您仍然可以保留本地SQL Server数据库,只要您负责维护不同节点之间的数据库一致性,它就能正常工作。
在您的情况下,我会像您现在一样亲自使用默认会员/角色提供程序。 但是在部署时,只需将连接字符串更改为正确的数据库服务器。
无论如何,您将需要一个用于其他内容的数据库,因此为什么不对所有包含该应用程序的数据使用相同的数据库(包括成员资格/角色)。
问候。
答案 1 :(得分:1)
您可以使用自定义角色&支持平面文件的成员资格提供程序,如XML。这是一个XML成员资格提供程序的链接,我见过类似的Roles实现。
答案 2 :(得分:0)
我在这里找到了一个很好的解决方案... http://aspnetxmlproviders.codeplex.com/。使用动态XML,您可以立即破解基于提供程序的简单安全模型。