目前的会员服务提供商似乎是一个巨大的过分杀手,有太多的功能.
所有我想要存储的是电子邮件/密码和基本配置文件信息,如First / LastName,电话号码.我只会需要2个角色,管理员和用户.
您对这种情况有什么建议,考虑到可能有数百万用户注册? StackOverflow使用什么?
过去我已经使用了现有的Membership API,并将其扩展到存储附加信息等.但是有诸如表
aspnet_Applications aspnet_Paths aspnet_SchemaVersions aspnet_WebEvent_Events aspnet_PersonalizationAllUsers aspnet_PersonalizationPerUser
这是非常多余的,我从来没有找到用.
编辑
只是为了澄清@ drachenstern的回答之后的其他一些冗余,还有一些额外的列,我在Membership / Users表中没有用,但是会增加每个select / insert语句的有效负载.
> MobilePIN
> PasswordQuestion / PasswordAnswer(我会做基于电子邮件的密码恢复)
> IsApproved(用户将永远被批准)
>评论
> MobileAlias
>用户名/ LoweredUsername(或Email / LoweredEmail)[email是用户名,所以只需要其中的1个]
此外,我听说GUID并不是那么快,而且更喜欢使用整数(像Facebook一样),这也是公开的.
如何创建我自己的会员资格提供商,重新使用一些会员API(验证,密码加密,登录cookie等),但仅适用于符合我要求的表格?
对文章和现有实现的链接是非常受欢迎的,我的Google搜索已经返回了一些非常基本的例子.
提前致谢
马尔科
解决方法
对于Guids和int作为主要的关键,让我解释一下.主键和聚集索引之间存在重大差异.您可以在不是主键的一部分的列上添加主键AND聚集索引!这意味着如果通过名称(或其他任何方式)排列数据更为重要,您可以自定义您的群集索引,以便在不影响主键的情况下精确地反映出所需要的内容.让我再说一遍 – 主键和聚集索引不是一样的.我写了一篇关于如何添加聚簇索引,然后是表的主键的博文.聚簇索引将以您需要的方式物理地排列表行,主键将强制您需要的完整性.看看我的博文,看看你能做什么.
真的很简单,你只需要添加聚集索引FIRST,然后添加主键SECOND.它必须按照这个顺序完成,否则你将无法做到这一点.这当然假定您正在使用sql Server.大多数人没有意识到这一点,因为sql Server将默认在主键上创建一个聚簇索引,但你要做的就是首先添加聚集索引,然后添加主键,你将会很好.使用int作为主键可能会变得非常有问题,因为数据库和服务器系统扩展.我建议使用Guids并添加聚簇索引以反映您实际需要存储数据的方式.
现在,总而言之,我只是想告诉你,创造一些伟大的东西,不要陷入沉重的细节,而不是给你足够的表现获得真正的重要性.人生如此短暂.另外,请记住,您的系统只能与其最慢的代码一样快.所以要确保你看看实际需要花费大量时间和照顾的东西.
还有另外一件事.你不能以面值在网络上看到你看到的一切.技术随时间的变化.有时你可能会看到一个问题的答案,有人写了很久以前,今天不再相关.此外,人们会回答问题并给出信息,而不用实际测试他们在说什么,看是否是真的.您可以为您的应用程序做的最好的事情是强调测试很好.如果您使用ASP.Net MVC,您可以在测试中执行此操作.您可以做的一件事是添加一个for循环,在测试中添加用户到您的应用程序,然后测试出来.这是一个想法.还有其他的方法.你只需要稍微努力来设计你的测试,或至少足够你的目的.
祝你好运!