c# – ASP.NET自定义成员资格提供程序,用于非常大的应用程序

前端之家收集整理的这篇文章主要介绍了c# – ASP.NET自定义成员资格提供程序,用于非常大的应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须提出一个非常大的网站的会员解决方案.该站点将使用ASP.NET MVC 2和MS sql2008数据库构建.

目前的会员服务提供商似乎是一个巨大的过分杀手,有太多的功能.

所有我想要存储的是电子邮件/密码和基本配置文件信息,如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搜索已经返回了一些非常基本的例子.

提前致谢
马尔科

解决方法

@Marko我可以明白,标准会员制可能包含比你需要的更多的功能,但事实是,这并不重要.有一部分会员系统,你不会使用,就像有一部分.Net,你不会使用.有很多东西可以.Net可以做,你永远不会使用,但你不会通过.Net和剥离你的功能?当然不是.您必须专注于对您正在尝试完成并从那里工作的重要事项.不要陷入分析瘫痪.你会浪费你的时间,旋转你的轮子,而不是最终比已经为你创造的更好.现在,微软有时候会误会它,但是他们确实很多事情都是正确的.你不必拥抱他们为实现目标所做的一切 – 你只需要了解什么对你的需求很重要.

对于Guids和int作为主要的关键,让我解释一下.主键和聚集索引之间存在重大差异.您可以在不是主键的一部分的列上添加主键AND聚集索引!这意味着如果通过名称(或其他任何方式)排列数据更为重要,您可以自定义您的群集索引,以便在不影响主键的情况下精确地反映出所需要的内容.让我再说一遍 – 主键和聚集索引不是一样的.我写了一篇关于如何添加聚簇索引,然后是表的主键的博文.聚簇索引将以您需要的方式物理地排列表行,主键将强制您需要的完整性.看看我的博文,看看你能做什么.

这是链接http://iamdotnetcrazy.blogspot.com/2010/09/primary-keys-do-not-or-should-not-equal.html.

真的很简单,你只需要添加聚集索引FIRST,然后添加主键SECOND.它必须按照这个顺序完成,否则你将无法做到这一点.这当然假定您正在使用sql Server.大多数人没有意识到这一点,因为sql Server将默认在主键上创建一个聚簇索引,但你要做的就是首先添加聚集索引,然后添加主键,你将会很好.使用int作为主键可能会变得非常有问题,因为数据库和服务器系统扩展.我建议使用Guids并添加聚簇索引以反映您实际需要存储数据的方式.

现在,总而言之,我只是想告诉你,创造一些伟大的东西,不要陷入沉重的细节,而不是给你足够的表现获得真正的重要性.人生如此短暂.另外,请记住,您的系统只能与其最慢的代码一样快.所以要确保你看看实际需要花费大量时间和照顾的东西.

还有另外一件事.你不能以面值在网络上看到你看到的一切.技术随时间的变化.有时你可能会看到一个问题的答案,有人写了很久以前,今天不再相关.此外,人们会回答问题并给出信息,而不用实际测试他们在说什么,看是否是真的.您可以为您的应用程序做的最好的事情是强调测试很好.如果您使用ASP.Net MVC,您可以在测试中执行此操作.您可以做的一件事是添加一个for循环,在测试中添加用户到您的应用程序,然后测试出来.这是一个想法.还有其他的方法.你只需要稍微努力来设计你的测试,或至少足够你的目的.

祝你好运!

猜你在找的C#相关文章