2009-08-02 62 views
11

我想知道如何在asp.net中扩展成员资格?如何在Asp.net中扩展成员资格?

当用户登录时,我想检查用户名和密码。当然,标准的asp.net成员资格会这样做(这是ValidateUser())。

我也想检查另一个叫做“机构”的字段。如果用户在此框中键入内容,我想验证“院校”,“用户名”和“密码”是否与数据库中的内容匹配。

如果用户将“院校”留空,那么我只想使用它在asp.net中提供的默认ValidateUser()方法,并只检查“userName”和“password”。

所以我可以重载ValdiateUser()方法?还是我必须自己写一个来处理这个新案例?

我该在数据库中存储这个“机构”字段?我听到有人推荐“个人资料”表,但我不确定。

而且我怎样才能改变成员对待这些为3个不同的用户

机构:ABC 用户名:A09410515 密码:1234567

机构:GHA 用户名:A09410515 密码:1234567

用户名:A09410515 密码:1234567

所以作为我的数据库应该关注这些应该是3个独特的用户。当然,如果我的数据库已经存储了相同的信息。

例如。

机构:ABC 用户名:A09410515 密码:1234567

,并有人试图与“用户名”和“机构”,那么它会吐回大约是重复的名称错误完全相同的信息注册。

回答

15

是的,你可以create a custom membership provider。您的提供商将实施MembershipProvider,使您可以完全控制在成员系统和扩展数据库模式之间创建界面。 Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site是一个详细的例子。

+0

嗨 感谢您的联系。但我仍然有点困惑。我在哪里存储我将要添加的这些额外字段。我是否可以将它添加到配置文件或什么? 就像我正在做一个自定义提供程序,以便我可以合并我的asp.net数据库和我的数据库在一起,但我使用的是mssql服务器。 另外我注意到他们重写了这些方法。我仍然想使用默认的验证方法。所以我要做2种重载方法。一个用我的自定义验证和一个方法调用默认验证方法? – chobo2 2009-08-03 21:48:20

2

这样做的懒惰方式是将机构和用户名一起创建实际的用户名。

因此,您将有3个不同的用户名:ABC & A09410515,GHA & A09410515和& A09410515。只是不允许用户在用户名中使用&。

然后,在创建用户或登录之前,只需将两个字符串组合在一起即可。

我不能想到的,不能固定一个简单的黑客任何显著的问题(如显示的用户名(使用username.split(“&”)[1]),但日本的职位肯定是“正确”的方式来做到这一点。

詹姆斯

1

您可以使用应用程序名称,作为该机构,这样,你会在不同的应用

罗德里戈具有相同的用户名。