【发布时间】:2010-10-06 14:37:17
【问题描述】:
我昨天花了很大一部分时间阅读这个主题,但仍然觉得我不确定该走哪条路。在身份验证和授权方面,我来自“自己动手”的背景。我们从未使用过 Forms 身份验证,更不用说 Membership API。查看我们的旧代码,我们将使用会话变量来捕获/控制用户是否登录等。在我即将进行的这个新项目中,我想让我们回到开始时应该做的事情的正轨,这是使用框架提供的工具。
我已经有一个我将要使用的数据库架构,但它并不是一成不变的;如有必要,我可以对其进行更改。在这个模式中已经有一个用户表,它使用一个整数作为主键。此表还包含其他信息,例如名字和姓氏。我还有基于 UserId 的外键到其他表,例如电话和地址。下面我概述了我想到的一些优点/缺点。
默认提供者
优点
- 代码更少。
- 能够利用所有相关的服务器控件,例如登录、更改密码。
缺点
- 开箱即用的某些控件可能对我没有用处。例如 CreateUserWizard,我可能需要在用户创建期间捕获其他信息,例如关联表的电话和地址信息。不确定这是否会使这个控件对我毫无用处。
- 我必须在我的关联表(电话、地址)中为默认提供程序中的 GUID 的 UserId 创建外键。
- 如果我确实创建了这些外键约束并且不使用级联删除;我还需要删除外键表中的关联行。可能不得不利用诸如 TransactionScope 对象之类的东西来确保所有这些都是原子操作。
自定义提供程序
优点
- 能够利用现有架构表。
- 更容易将身份验证/授权提取到服务中。
缺点
- 必须自己为大多数/所有事情提供实施。
- 要使用任何控件,我必须在提供程序中提供它们所需的实现。
可能还有其他一些事情我还没有考虑过,因为我以前从未使用过它,这也让我有点不舒服。
谢谢。
【问题讨论】:
标签: c# .net asp.net asp.net-membership