asp.net.netvb.netformsauthentication

Assistance with Forms Authentication and Custom Roles


I am working on a asp.net website and I am having trouble implementing a custom role provider using forms authentication.

I have a SQL Server database "MyBase" with a "UserRoles" table which contains UserRoleID, EmployeeID, RoleID, and UserName fields. I want to retrieve the roles for a user from this table when users log in using a custom login page (just a couple textboxes, labels, and a button).

I have searched/read several questions, scenarios, and examples but I'm still missing something somewhere so I'm reaching out for some assistance.

What I have done so far:

In web.config:

I have created the follow custom classes and listed sub/function/properties:

In my login button:

  1. I encrypt the user's password.
  2. Call my custom MembershipProviders' ValidateUser MemProv.ValidateUser(txt_username.Text, encrypedPW)which returns true or false correctly.
  3. Call FormsAuthentication.SetAuthCookie(txt_username.Text, False)
  4. Call my custom RoleProvider's GetRolesForUser function: RoleProv.GetRolesForUser(txt_Username.Text) which returns a String() or roles correctly.

When I check my User.Identity, isAuthenticated = false and Name = "".

I'm pretty sure I am missing an implementation of IIdentity and/or IPrincipal, but I don't know where/how to implement them.

So my questions are:

  1. Do I need to go through all of this just to keep my roles in a SQL Server table I created?

  2. Do I need to incorporate IIDentity and IPrincipal? If so, how do I or where do I do that?


Solution

  • I created two classes that implement IPrincipal and IIdentity.

    In the Principal's IsInRole function I make a call to my custom RoleProvider's IsUserInRole function.

    I logged using my custom login page and was redirected to the correct form. The Identity and RolePrincipal both contain the correct information.