如何将aspnet_users表(asp.net成员资格)集成到现有数据库中

时间:2010-05-22 19:37:51

标签: sql-server database-design asp.net-membership

我有一个已有用户表的数据库

列:
userID - int
loginName - 字符串
首先 - 字符串
最后一个字符串

我刚刚安装了asp.net会员表。现在我的所有表都加入到我的用户表中,外键输入“userId”字段

如何将asp.net_users表集成到我的架构中?这是我想到的想法:

  1. 在我的users表和新插入中添加 membership _id 字段,在我的users表中包含该新字段。这似乎是最干净的方式,因为我不需要打破任何现有的关系。

  2. 中断所有现有关系,并将用户表中的所有字段移动到asp.net_users表中。这似乎是一种痛苦,但最终将导致最简单,规范化的解决方案

  3. 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我经常使用各种提供商堆栈并取得巨大成功。

我将继续进行尊重观察,即您对SqlProvider堆栈的体验是有限的,并且您认为最小阻力的路径是拼接到aspnet_db。

抽象提供程序堆栈提供了完全分离的功能集,以直观的方式互相补充和交互......如果您花时间了解它是如何工作的。

通过扩展,虽然并不完美,但SqlProviders为asp.net运行时的广泛个性化和安全设施提供了一个非常强大的后备存储。

您更加努力地了解这些设施的运作方式,更少关注如何修改(读取:打破)现有架构,更多地关注如何设想现有数据如何适应现有架构,减少您的工作量最终会花费最终的最终结果是一个强大的,易于理解的安全和个性化系统,您不必设计,编写,测试和维护。

不要误解我的意思,我不是说不定制供应商。这是抽象工厂模式的重点。但在你把它自己拼接到一个数据库/模式/关键基础设施系统之前,你应该更好地理解它。

一旦你达到这一点,你将开始看到如果你专注于学习如何制作在开发时间有数千个工时的系统,并且每天每分钟都有无数用户为你工作,生活会有多么简单在您和您的利益相关者真正感兴趣的事情上,您将完成更多实际工作。

所以 - 让我建议您将用户导入aspnet_db / sqlprovider堆栈并利用提供的功能。

aspnet_db中的userId是一个guid,并且由于很多原因应该保持这种状态。如果您需要保留原始的整数用户标识符 - 将其存放在移动引脚字段中以供参考。

成员资格是您希望放置与安全性和身份识别相关的信息的地方。用户名,密码等

配置文件是您希望放置名称和网站首选项之类的volitile元的地方。

无论如何 - 我想说的是,在你破解它之前,你需要更好地理解数据库和提供者。从了解如何使用它开始,您的经验将更有成效。

祝你好运。

答案 1 :(得分:1)

根据我的经验,“ASP.NET成员资格提供程序”引入了比它解决的更多的复杂性。所以我会选择选项2:自定义用户表。

P.S。如果有人成功使用“ASP.NET成员资格提供程序”,请发表评论!