C# - Creating And Executing A Script For The Default Membership Tables?
Feb 5, 2011
I'm creating an AppHarbor MVC3 application and want to use the standard membership provider support. The AppHarbor guys told me I needed to create script for the table structure that I can run on my AppHarbor database. I'm not really familiar with databases, however. How do I go about creating and executing a script for the default membership tables?
I was reading through this post here http://www.misfitgeek.com/op-ed/adding-asp-net-membership-to-your-own-database and thought to my self what the common practice is. What do developers using ASP.NET membership and authorization in their applications recommend as a best practice? creating the membership tables in the same database that stores their applications data or configuring a second database to store ONLY the membership information?.
My current setup is a different database for membership information ONLY but am thinking that increases the number of databases i have to maintain. If I have 5 applications using asp.net membership, then that means 5 more asp.net membership databases. So do you normally create the asp.net membership tables in your main database or you configure a separate membership table? what do you recommend.
Now this might just be straightforward, but I can't seem to figure it out..
I have set up the Custom Membership provider, and gave it the proper connection stuff. What I know is that it connects to the correct database, but I know for sure that it doesn't look at the correct table.
How would I set it up to use a specific table? As the table already has users in them.
The table name is: members_info.
the column names are: member___id(key), member_name, member__pwd, member_perm
member___id => Being the Key and the account name to login with member_name => Being the users Name or Nickname member__pwd => 10 chars long (for now) member_perm => holds 1 of the following values: 0) User 1)Admin 2)Banned
now I know that the later one is to be setup by the Role Provider, and I'm sure once I know how to do the membership one that one is similar in some way.
So my question is, how do I point the Custom Membership Provider to the table: members_info and to use member___id for username, members__pwd for password (and possibly get member_name out to say: Welcome {member_name}! when they login).
===
Added info. Members__uid is the key value as it increases on each new entry.
===
Since you can't tell it to use a specific table
How can I set it up so, that it works with the tool provided in visual studio? (Website > ASP.net Configuration).
As it now says 0 users, on the security tab. I want to be able to manage the users through here too.
i have Login membership, also have table with database address, with columns: UserId, Address, City, etc... How given the user login,show data after the user login with another database table address (UserId) .
I had to upgrade a sites ecuroty from a custom system to .net membership. I created all the users like this.
ds = Wservices.SelectBulkUsers() If Not ds Is Nothing AndAlso Not ds.Tables(0) Is Nothing AndAlso ds.Tables(0).Rows.Count > 0 Then For Each dr In ds.Tables(0).Rows username = dr("username") password = dr("password") role = dr("SecurityClearance") email = dr("email") Dim newUser As MembershipUser = Membership.CreateUser(username, password, email, "", "", True, status) Select Case role Case "1" Roles.AddUserToRole(username, "normal user") Case "2" Roles.AddUserToRole(username, "administrator") Case "3" Roles.AddUserToRole(username, "super administrator") End Select If newUser Is Nothing Then errorMsg = username & " - " & status.ToString & "<br />" End If Next litResult.Text = errorMsg End If
I thought everything was fine and then went through the labourious task of replacing all the usersids used a as a foreign key in all the tables. It was only after doing this and trying to log on I couldnt, and noticed the membership table was empty. I assumed (stupidly) as it had done the users/ roles it must have done the membership. As I have already re-assigned the old user ids I dont want to import again as the userid will chnage. So my question is: Can I create a membership for each of the users in my aspnet_users table? I have the passwords etc in varchar fields at min from old table.
Lets say that I have a database set up with a load of info in it and I decide I want to add the membership and roles functionality to my site but my hosting provider makes me pay for each database I use. I don't want to pay for another db, so how do I set it up so that instread of creating membership and roles tables in the the aspnetdb database, it creates them in my existing database?
I want to add custom columns to some tables created by ASP.NET. For example; I need to add two fields such as FirstName and LastName to the aspnet_Membership table.
I can add this directly by editing the table but;
Is this the right thing to do (I mean; extending the table directly) OR should I create a separate table and hold the extra user data, there?How can I see these custom database fields as properties in code completion? example: membershipuser.FirstName;
I want to rename aspnet_application table and its columns. 1- Does membership framework allow me to do that ?2- Will there be any problem in accessing System.Web.Security functions ?3- I have to change procedures and functions etc ?
I'm trying to do a bulk insert of data into the aspnet_Membership table. I have existing records from a previous version of the system I am re-building in asp.net. I've been researching and asking questions, but I am still missing something. What is the best way to do this? I believe I need to grab my previous table and iterate over each record and insert into the new membership table via the Membership.CreateUser method. So far I have been unable to make it work. My code so far in the on click event of a button is below.
using System.Web.Security; using System.Data; using System.Data.SqlClient; [code]....
I've got an MVC 1.0 View that is more-or-less an attempt at reproducing WSAT.
On the Security->Manage Users page there's a column of checkboxes for "Active" for each user. Also when clicking the 'Edit roles' link a set of roles shows up in the Roles column of the table.
I'm using the standard SQL based Membership and Role providers that come out of the ASP.NET box.
For some reason, when I run the app from VS2008 all is well and I can update the Active and Roles values. However, when I deploy to a remote server, either my test server or in production, the checkboxes don't update the databse. Note that the links for 'Edit user', 'Delete user' work fine. I can create a new user or delete a user with no problems in any of the deployed locations. Also the 'Edit roles' link also works fine in that it brings up the list of all possible roles and shows which roles the user is in. The problem is specifically with the Checkboxes.
Interesting to note is that the JavaScript alert() (see below) does fire when clicking on any of the Role checkboxes. However, although the box is checked, the database is not updated on the any but VS2008 Casini. The database connection string is not changed on any of the execution sites which are running SQL 2008. IIS 7 on one deployed server (an ISP) and 7.5 on the other my in-house test server.
Here's the code I'm using to create the Roles portion of the page:
I have an application in Asp.net and using sql server to store user information. There is a table named dbo.member which stores user information - fname, lastname, email, phone etc. We use LDAP for authentication. The entire application works on this member table. There is a unique userid(not password) associated with each member. I installed default aspnet_membership, aspnet_role tables by running aspnet_regsql.exe utility. Now with increasing number of applications, handling members' information is becoming nightmare. I hope Membership providers will solve this problem but I have doubts.
How can I integrate existing member table with default aspnet_membership table? Or should I integrate since it is very limited? Same is the case with aspnet_Profile - it is very limited and I have stored all profile information into member table. We store more information and we want to query all that information for a user. Should I create my own provider that will use dbo.Member table instead of dbo.Membership table and also with Profile provider?
I'm creating a new middle tier where all of our client calls will go through a WCF service. We're using ASP.NET membership with the service in order to authenticate users. The middle tier will be hitting an existing database in which we already have an InetUsers table containing usernames and passwords.This is where it starts to get messy. This new middle tier will be used by our web application, but not by our existing desktop application, which will - until we rewrite it at some point in the future - be using the old COM+ middle tier. Administration of the users for the web application takes place in the desktop application. In other words, users will be created and passwords set and changed from within the desktop application, which in turn hits the already existing InetUsers table.Ideally, what will happen is when we deploy the new middle tier, we'll take all of the users from the InetUsers table and create records for them in aspnet_Users and aspnet_Membership. Then we'll set a trigger on the InetUsers table to keep aspnet_Users and aspnet_Membership up-to-date.There's a whole bunch of questions wrapped up in this, so I'll try and list them all out here:Is this the right approach? Obviously having this data in two places isn't ideal, but bear in mind here that I'm not the final decision maker here and we're kinda stuck with some legacy stuff here, at least for now. Still - maybe there's a better way.In the same vein - would we be better off coding our own membership provider rather than using the SqlMembershipProvider? How difficult/easy is it to do so?If we use this approach, I plan on using the aspnet_Membership_XXXX stored procedures for the initial population of the tables as well as in the triggers. Having done some research into this, it appears that if I want to call aspnet_Membership_CreateUser directly from SQL (ie in a trigger...) rather than using the API, I have to store clear text passwords since I can't get the salt and the hash right otherwise. Is this true?Does any of this even make sense or am I going about this the wrong way to begin with?
I'm about to roll out my web site soon, and was just wondering if there's a way to roll out the db I'm working with on my dev computer, or if I have to recreate everything on the production server. If I can roll out my dev db, will the uids be the same?
how to create tables in my database programaticlly for my website. I've looked all over trying to figure this out, but cannot seem to get anything. Pretty much what is going to happen is the user is going to create an article, and it will have different sections. So each article will be a table, each table will have columns such as "title", "literature","tags", etc... and each section of the article will be a row. The reason why I need the sections of the article to be rows is because the number of sections in each article will vary.
What is the best way to go about accomplishing this? or is there a better way of doing it? I cannot think of anything.
After running the aspnet_regsql.exe tool, i notice a bunch of different tables pertaining to the ASPNET security (e.g. aspnet_Applications, aspnet_Membership, aspnet_Paths, aspnet_Personalations, aspnet_Profile, aspnet_Roles, aspnet_SchemaVersion, aspnet_Users, aspnet_UsersInRoles). Do the different providers (AspNetSqlMembershipProvider, AspNetSqlProfileProvider, AspNetSQLRoleProvider) relate or associated with certain aspnet_xyz tables? I imagine the AspNetSQLProfileProvider is responsible for the aspnet_Profile table correct? The AspNetSQLRoleProvider probably is tied to the aspnet_Users, aspnet_Roles, aspnet_UsersInRoles table? Any links documenting the relationship between teh providers and the aspnet_xyz tables?
The following code is used to add the asp membership tables to an already existing database instead of creating a seperate database for membership and having two databases in the application.
aspnet_regsql.exe -S .SQLEXPRESS -U username -P password -d databsename -A all
It works fine by adding the membership tables to the existing database that is located in the c drive, program files sqlserver folder.
But my database however is not in the c drive but located in my asp website app_data folder, so the above code does not give any error and the tables are not added after I run it. how can I now add the membership tables using the above code when my database is located in the website app_data folder,
I'm going to deploy my first app soon, and I would like to do a few things:1. Deploy the tables and sprocs needed for asp.net's membership stuff2. Create my own sprocs and set rights3. Edit the web.config fileIs there any way to do both of these? The only thing I will have to go on will be the connection string...
I want to create a dropdown of Vendors. I have a Vendors table in my DB, containing a VendorID and a CompanyID. The Company table contains a CompanyID and a Name.
I would like to have a dropdown with items that have the VendorID as the value and the Company Name as the text. But I don't know how to get the Name field from the related table to put in the dropdown, so I have the VendorID as the value and text. Here's what I have right now.
I'm passing in a model that contains this:
public IEnumerable<Vendor> Vendors { get; set; }
In my controller, I'm setting the value of Vendors like this:
MyDBEntities _entities = new MyDBEntities(); Vendors = _entities.Vendors;
Here is my dropdown list on the page:
<%= Html.DropDownListFor(m => m.VendorId, new SelectList(Model.Vendors, "VendorID", "VendorID"), "- Select a Vendor -")%>
I thought I could create a custom function - GetVendorsForDropdown - that would return only the data I needed, and changing my model to contain IEnumerable<Something>. But I don't know what the return type should be.