亥, 我正在尝试为我的网站存储用户权限。但我对xml和数据库有点困惑。对于站点中的每个用户都有不同的权限。你曾经遇到过这个问题吗?例如,如果我的网站是购物网站,对于本地用户,则无需显示报告菜单。销售人员无需显示购买页面。等等..
我认为您了解我的问题。我使用xml文件完成了此用户管理。对于每个用户,新节点将根据菜单创建并保留在xml文件中。下次用户登录时,检查权限并仅显示允许的菜单。
我的老板告诉我使用数据库做同样的事情。通过使用XmlDataSource,将数据绑定到树视图(用于设置权限)和绑定到menustrip非常简单。 他指的是安全问题。我不这么认为。
哪个更好?数据库或XML
答案 0 :(得分:1)
答案 1 :(得分:1)
我的建议是使用asp.net成员资格和角色(由Microsoft编写)。这是一个非常好的安全解决方案 - 登录安全性,角色(权限)并存储在SQLServer数据库中(不确定它是否可以存储在其他地方)。
我在我的网站上使用它,你可以直接使用会员控制(登录表格,更改密码等),或者你可以自己动手。
我发现的唯一棘手的一点是在我的dB中设置成员资格表,视图和存储过程(你下载一个dB脚本),但实际上它实现起来相当简单。
答案 2 :(得分:1)
ASP .NET成员资格和角色(在ASP .NET 2上引入的Provider Model的一部分)是(恕我直言)只有当你需要一些基本的东西时才会很好。问题是你需要使用SQL Server来使用整个系统,但如果你打算转移到另一个数据库提供程序(MySQL,SQLite等),那么你必须implement your own provider(这是最好的痛苦),并了解整个部分是如何相互配合的。当然,找到custom implementation这很容易,但不是副本&贴东西。
默认提供程序模型的另一个坏处是,您将获得大量SQL存储过程,也称为维护噩梦。问题是,如果你的网站扩展,那么这些SP将使你的生活变得生活地狱(在那里)如果你甚至敢于改变主机,那么你就是在享受,所以我的建议是制作你自己的权限层次结构并按照您的意愿使用它。此外,查找advices和一些已经存在的权限问题解决方案,这是非常常见的。
答案 3 :(得分:0)
网站安全性可以分为不同的部分。
ASP.NET Forms Authentication Provider是实现身份验证的好方法。我最近创建了一个自定义提供程序,它与我们公司的X500目录(LDAP)进行通信。这是非常直接的。
对于授权,我们实施了entlib安全应用程序块。它允许您将角色/权限保存在一个单独的位置,您可以通过UI和服务层访问该位置(假设您正在开发可扩展的解决方案)。您可能还想查看定于取代entlib安全应用程序块的Windows Itentity Foundation,但它仅适用于.NET 4.0。