我正在建立一个新网站,我的朋友建议我使用asp.net会员身份验证(登录、注册、密码恢复等)。
我发现所有东西都存储在XML文件中。
我想知道使用会员身份验证的优缺点,而不是从头开始构建。
我正在建立一个新网站,我的朋友建议我使用asp.net会员身份验证(登录、注册、密码恢复等)。
我发现所有东西都存储在XML文件中。
我想知道使用会员身份验证的优缺点,而不是从头开始构建。
MS登录解决方案由多个部分组成。
表单身份验证 - 基本上创建一个安全的cookie,在每个请求中都会显示“我已通过身份验证!”。如果没有这个,用户将不得不在每一页上都进行登录。
成员资格 - 这是存储用户及其密码并验证用户凭据的方法。有几种方法可以实现:
创建自定义MembershipProvider - 您可以继承MembershipProvider来自定义数据存储的位置和方式。
创建自己的身份验证方案
角色 - 角色通过Web.config提供的授权机制控制用户可以做什么,并且在网站地图上进行安全剪裁。
使用SqlRoleProvider - Microsoft提供了一个用于存储角色的数据库
创建自定义RoleProvider - 您可以从RoleProvider继承以自定义数据存储位置和方式。
创建自己的身份验证方案
需要注意的是,成员身份提供程序和角色提供程序可以独立选择或自定义。如果可以的话,我个人建议使用SqlMembershipProvider,并评估角色提供程序的选项。
我不喜欢使用会员提供程序。
当场景是“标准”时,这很有用,但在需要更多自定义规则的情况下,我认为它的效果并不好。出现了“解决方法”。
而且不需要存储在XML中,存在其他解决方案(例如数据库)。
缺点:
你偏爱的数据存储可能不被完全支持,需要额外工作。
它可能与你当前或未来的要求不匹配。
相对于你自己构建的东西,你可能无法完全理解其操作细节。
优点:
相较于自己构建,你可能可以节省时间。
个人建议……如果这是一个重要的项目,我会选择自己构建(当然要保留表单认证)。根据我的经验,MS提供的许多“开箱即用”的功能都很令人失望。
实际上,并不是所有的东西都必须存储在 XML 文件中。您可以使用多种方式存储成员数据,包括数据库。
您还可以使用 ASP.NET 角色/成员身份库作为自定义的起点。网络上有一些有关如何做到这一点的教程。
使用内置函数的好处是 ASP.NET 成员身份 GUI 控件几乎“只需轻点即可使用”.. ;)
RoleProvider
),但MembershipProvider
还是相当不错的。 - Greg