How to change the RoleProvider?

I would like to show you guys how you can change the RoleProvider too. First of all yo should create a class. I have named my class MyRoleProvider and it should derive from the RoleProvider class. There are a lots of method, but the most important one is the GetRolesForUser.

public class MyRoleProvider : RoleProvider
{
    public override void AddUsersToRoles(string[] usernames, string[] roleNames)
    {
        throw new NotImplementedException();
    }

    public override string ApplicationName
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    .........

    public override string[] GetRolesForUser(string username)
    {
        return //some algorithm to figure out the role(s) of the user
    }

    ........

    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
    {
        throw new NotImplementedException();
    }

    public override bool RoleExists(string roleName)
    {
        throw new NotImplementedException();
    }
}

After that you should give some line of code to the web.config file too.

<configuration>
  <configSections>
    ......
  </configSections>
  <connectionStrings>
    ......
  </connectionString>
  <appSettings>
    .......
  </appSettings>
  <system.serviceModel>
   ......
  </system.serviceModel>
  <system.web>
    ......
    <roleManager enabled="true" defaultProvider="PrivateRoleProvider">
      <providers>
        <clear />
        <add name="PrivateRoleProvider" type="Security.CustomRoleProvider" />
      </providers>
    </roleManager>
    .....
  </system.web>
<!-- other part of the web.config  -->

and the last step is open one of your Controller and change the Authorize attribute like the following one:

public class HomeController : Controller
    {
        [Authorize(Roles="SomeRoleName")]
        public ActionResult Index()

That is it. Have fun!

I have written this article based on the following article

Advertisements

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: