views:

701

answers:

3

Hi

I am wondering how do I extend the membership stuff in asp.net?

When a user logs in I want to check the UserName and Password. Of course the standard asp.net membership does this(this it is ValidateUser()).

I also want to check another field called "institution". If a user types something in this box I want to verify if the "institution", "userName" and "password" match what is in the database.

If a user leaves the "institution" blank then I just want to use it default ValidateUser() method that is provided in asp.net and check only "userName" and "password".

So can I overload the ValdiateUser() method? Or will I have to write my own one to handle this new case?

Where would I store this "institution" field in the database? I heard something about people recommending the "Profile" table but I am not sure.

Also how can I change the membership to treat these as 3 different users

Institution: ABC UserName: A09410515 Password: 1234567

Institution: GHA UserName: A09410515 Password: 1234567

UserName: A09410515 Password: 1234567

So as my database should be concerned these should be 3 unique users. Of course in the case that my database already would have the same information stored in it.

For example.

Institution: ABC UserName: A09410515 Password: 1234567

and someone tries to sign up with the exact same information for "UserName" and "Institution" then it would spit back an error about being duplicate names.

+5  A: 

Yes, you can create a custom membership provider. Your provider will implement MembershipProvider giving you full control over creating an interface between the membership system and extended database schema. Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site is a detailed example.

JP Alioto
HiThanks for the links. I am still a bit confused though. Where do I store these extra fields that I would be adding. Like do I add it to the profile or what?Like I am making a custom provider so that I can merge my asp.net db and my db together but I am using mssql server.Also I noticed they override that methods. I still want to use the default verify method. So do I make 2 overload methods. One with my custom verify and one method calling the default verify method?
chobo2
+1  A: 

The lazy way of doing this would be to combine institution and username together to create the actual username.

Thus you'd have 3 distinct usernames: ABC&A09410515, GHA&A09410515, and &A09410515. Just don't allow a user to use & in a username.

Then, before creating the user or logging in you just combine the two strings together.

I can't think of any significant problems that can't be fixed with a simple hack (e.g. displaying the username (use username.split('&')[1] ), but JP's post is definitely the "right" way to do it.

James

James S
A: 

You might use Application Name as the institution, that way you would have the same user name in different applications

Rodrigo.

Rodrigo