How to Use a Membership Provider of ASP.NET in WINFORM Application

How to Use a Membership Provider of ASP.NET in WINFORM Application

We can use the known membership provider of ASP.NET in our winform application.

What is the goal? The membership of ASP.NET is a really complete way to manage users and roles (Create,Edit,Delete, access rules to forms like access rules to pages ).

How do we implement it?

First we create a login form connecting to the database ASPDBNET.mdf (generated automatically in a project asp.net)

The code of the button login will be :

VB
Imports System.Security.Principal
Imports System.Web.Security

Private
Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
        If Membership.ValidateUser(UsernameTextBox.Text, PasswordTextBox.Text) Then
           '''' treatment if authenticated
     
        Else
             ''''
        End If
    End Sub


C#
using System.Security.Principal;
using System.Web.Security;
 
private void  OK_Click(System.Object sender, System.EventArgs e)
{
    if (Membership.ValidateUser(UsernameTextBox.Text, PasswordTextBox.Text)) {
    }
    // treatment if authenticated
 
    else {
        //
    }
}



Same time we need to edit the app.config and to add under configuration 

<system.web>
    <membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
           <remove name=AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="AspNetConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="AspNet" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" cacheRolesInCookie="true" createPersistentCookie="false" cookieProtection="All">
      <providers>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" applicationName="AspNet" connectionStringName="AspNetConnectionString"/>
      </providers>
    </roleManager>
  </system.web>

Once authenticated and redirected to another winform we can detect current user and work on access rules by roles 

VB
''' treatment for current user
nom = Thread.CurrentPrincipal.Identity.Name
        Dim user As MembershipUser = Membership.GetUser(nom)
        Dim identity As New GenericIdentity(user.UserName)
        Dim principal As New RolePrincipal(identity)
        Threading.Thread.CurrentPrincipal = principal
               If Roles.GetRolesForUser(nom).Length = 1 Then
            rolesArray = Roles.GetRolesForUser(nom)
            role = rolesArray.First.ToString
            ''' enable controls for examples for the role of current user
        Else '' disable controls
        End If
    

C#
using System.Security.Principal;
using System.Web.Security;
public class AddUser
{
    private void Button1_Click(System.Object sender, System.EventArgs e)
    {
        MembershipUser user;
        user = Membership.CreateUser(TextBox1.Text, TextBox2.Text);
        MsgBox(TextBox1.Text + "is created successfully");
        this.Dispose();
  
    }
}


To create a user you can create a winform with simple textboxes (encryted one for the password) and use that code 

VB
Imports System.Security.Principal
Imports System.Web.Security
Public Class AddUser
  
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim user As MembershipUser
        user = Membership.CreateUser(TextBox1.Text, TextBox2.Text)
        MsgBox(TextBox1.Text & "is created successfully")
        Me.Dispose()
  
    End Sub
End Class


C#
using System.Security.Principal;
using System.Web.Security;
public class AddUser
{
    private void Button1_Click(System.Object sender, System.EventArgs e)
    {
        MembershipUser user;
        user = Membership.CreateUser(TextBox1.Text, TextBox2.Text);
        MsgBox(TextBox1.Text + "is created successfully");
        this.Dispose();
  
    }
}


Leave a Comment
  • Please add 7 and 4 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Comments
Page 1 of 1 (1 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
  • In the app.config file, the line "<remove name=AspNetSqlMembershipProvider"/>" is missing a quote, and should be:

    "<remove name="AspNetSqlMembershipProvider"/>"

  • Ed Price - MSFT edited Revision 1. Comment: Tag

  • Great !!! Hope you continue provide us some other code !!!

Page 1 of 1 (3 items)