我昨天花了很大一部分时间阅读这个主题,但仍然觉得我不确定要走哪条路。当涉及到认证和授权时,我来自一个“滚动自己的”背景。我们从未使用表单身份验证,更不用说Membership API。看看我们的旧代码,我们将使用会话变量来捕获/控制用户是否登录等。有了这个我将要进行的新项目,我想让我们重新回到我们应该做的事情上,是使用框架提供的工具。帮我决定是否使用ASP.NET默认会员/角色提供商或编写自定义提供商
我已经有一个数据库模式,我将与之合作,但它不是一成不变;如有必要,我可以对其进行更改。在这个模式中,已经有一个Users表,它使用一个整数作为主键。此表还包含其他信息,例如名字和姓氏。我还拥有基于UserId的外键给其他表格,如电话和地址。下面我概述一些想到的优点/缺点。
默认提供程序
优点
- 更少的代码。
- 能够利用所有关联的服务器控件,例如Login,ChangePassword。
缺点
- 某些控件可能不usedful我开箱。例如CreateUserWizard,我需要在用户创建期间捕获其他信息,例如电话和地址信息到关联的表。不知道这是否使这个控制对我无用。
- 我必须在我的关联表(Phone,Address)中创建外键给UserId,它是默认提供者中的GUID。
- 如果我确实创建了这些外键约束而不是利用级联删除;我还需要删除外键表中的关联行。可能不得不利用类似于TransactionScope对象的东西来确保所有这些都是原子操作。
自定义提供
优点
- 能够利用现有的模式表。
- 更容易将认证/授权提取到服务中。
缺点
- 必须提供实现大多数/都要亲力亲为。
- 要使用任何控件,我将不得不在提供者中提供他们需要的实现。
可能还有其他事情我还没有考虑过,因为我以前从未使用过这个,这也让我有点不舒服。
谢谢。
我也倾向于这种方式,模式似乎对我非常有限。我真的不想使用他们的GUID作为外键。事实上,我将不得不在应用程序中编写我自己的管理屏幕(管理员用户可以创建其他用户等),这使我相信使用默认设置的好处将是最小的。基本上,我输的唯一瘦是密码恢复的默认实现等。 – e36M3 2010-10-06 17:10:12
您提出了另一个不使用默认提供程序的好理由。最后,默认模式只会感觉到我的应用程序,不符合我的数据库模式的其余部分,并且我总是担心遇到隐藏的陷阱,就像上面提到的存储配置文件的方式一样。 – 2010-10-06 17:50:16
配置文件提供程序几乎没有价值,但完全可选,所以我不会对成员资格提供程序持有这一点。 – Greg 2010-10-08 12:57:51