MySQL Connector/NET Developer Guide
This section documents the ability to use a simple membership provider on MVC 4 templates. The configuration OAuth compatible for the application to login using external credentials from third-party providers like Google, Facebook, Twitter, or others.
This tutorial creates an application using a simple membership provider and then adds third-party (Google) OAuth authentication support.
This feature was added in MySQL Connector/NET 6.9.0.
Connector/NET 6.9.x or higher
.NET Framework 4.0 or higher
Visual Studio 2012 or higher
MVC 4
To get started with a new project, do the following:
Open Visual Studio, create a new project of ASP.NET MVC 4 Web Application type, and configure the project to use .NET Framework 4.5. The following figure shows and example of the New Project window with the items selected.
Choose the template and view engine that you like. This tutorial uses the Internet Application Template with the Razor view engine (see the next figure). Optionally, you can add a unit test project by selecting Create a unit test project.
Add references to the MySql.Data
,
MySql.Data.Entities
, and
MySql.Web
assemblies. The assemblies chosen
must match the .NET Framework and Entity Framework versions
added to the project by the template.
Add a valid MySQL connection string to the
web.config
file, similar to the following
example.
<add name="MyConnection" connectionString="server=localhost; UserId=root; password=pass; database=MySqlSimpleMembership; logging=true;port=3305" providerName="MySql.Data.MySqlClient"/>
Under the <system.data>
node, add
configuration information similar to the following example.
<membership defaultProvider="MySqlSimpleMembershipProvider"> <providers> <clear/> <add name="MySqlSimpleMembershipProvider" type="MySql.Web.Security.MySqlSimpleMembershipProvider,MySql.Web, Version=6.9.2.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" applicationName="MySqlSimpleMembershipTest" description="MySQLdefaultapplication" connectionStringName="MyConnection" userTableName="MyUserTable" userIdColumn="MyUserIdColumn" userNameColumn="MyUserNameColumn" autoGenerateTables="True"/> </providers> </membership>
Update the configuration with valid values for the following
properties: connectionStringName
,
userTableName
,
userIdColumn
,
userNameColumn
, and
autoGenerateTables
.
userTableName
: Name of the table to
store the user information. This table is independent from
the schema generated by the provider, and it can be
changed in the future.
userId
: Name of the column that stores
the ID for the records in the
userTableName
.
userName
: Name of the column that
stores the name/user for the records in the
userTableName
.
connectionStringName
: This property
must match a connection string defined in
web.config
file.
autoGenerateTables
: This must be set to
false
if the table to handle the
credentials already exists.
Update your DBContext
class with the
connection string name configured.
Open the
InitializeSimpleMembershipAttribute.cs
file from the Filters/
folder and locate
the SimpleMembershipInitializer
class. Then
find the
WebSecurity.InitializeDatabaseConnection
method call and update the parameters with the configuration
for connectionStringName
,
userTableName
,
userIdColumn
, and
userNameColumn
.
If the database configured in the connection string does not exist, then create it.
After running the web application, the generated home page is displayed on success (see the figure that follows).
If the application executed with success, then the generated schema will be similar to the following figure showing an object browser open to the tables.
To create a user login, click
on the generated web page. Type the user name and password, and then execute the registration form. This action redirects you to the home page with the newly created user logged in.
The data for the newly created user can be located in the
UserProfile
and
Webpages_Membership
tables.
OAuth is another authentication option for websites that use the simple membership provider. A user can be validated using an external account like Facebook, Twitter, Google, and others.
Use the following steps to enable authentication using a Google account in the application:
Locate the AuthConfig.cs
file in the
App_Start
folder.
As this tutorial uses Google, find the
RegisterAuth
method and uncomment the last
line where it calls
OauthWebSecurity.RegisterGoogleClient
.
Run the application. When the application is running, click Use another service to log in (shown in the figure that follows).
to open the log in page. Then, click underThis action redirects to the Google login page (at google.com), and requests you to sign in with your Google account information.
After submitting the correct credentials, a message requests permission for your application to access the user's information. Read the description and then click
to allow the quoted actions, and to redirect back to the login page of the application.The application now can register the account. The User name field will be filled in with the appropriate information (in this case, the email address that is associated with the Google account). Click to register the user with your application.
Now the new user is logged into the application from an
external source using OAuth. Information about the new user is
stored in the UserProfile
and
Webpages_OauthMembership
tables.
To use another external option to authenticate users, you must enable the client in the same class where we enabled the Google provider in this tutorial. Typically, providers require you to register your application before allowing OAuth authentication, and once registered they typically provide a token/key and an ID that must be used when registering the provider in the application.