Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alternative User management in ASP.NET MVC

Tags:

asp.net-mvc

I am in the planning phase of a new ASP.NET MVC application and one of the requirements is storing some user information that is not part of the standard set found in the User class that comes with ASP.NET MVC. I suppose it comes down to two questions.

1) Can I edit the class that is being used already to store the information that I need?

2) If I roll my own how can I keep things like the Authentication piece that make things so nice when trying to lock down some views using the User.IsAuthenticated method?

Another alternative I have considered is using the User class provided as is, and instead putting the other information into a separate table with the guid userid as the foreign key.

Suggestions?

like image 985
Anthony Potts Avatar asked May 23 '09 14:05

Anthony Potts


People also ask

How can manage user role in ASP NET MVC?

Create Roles in Asp.Net MVC Membership To create Roles, first, we need to add a Model with the name Role, and we are going to Add a Role Model inside Account Models, which is inside Models Folder. After Creating the Model, now let's add Action Method with Name “RoleCreate” for both Http Request in Account Controller.

What is UserManager in asp net core?

The ASP.NET Identity UserManager class is used to manage users e.g. registering new users, validating credentials and loading user information. It is not concerned with how user information is stored. For this it relies on a UserStore (which in our case uses Entity Framework).

How can check user already login in ASP NET MVC?

You need to set FormsAuthentication. SetAuthCookie(PrimaryKey, false); when user is loggedIn. Here, PrimaryKey is the key that you can use throughout the session for identification of the user using User.Identity.Name .


2 Answers

Profiles are one option as @Burt says, and offers a lot of flexibility.

I had a similar need to track Employee information, but I opted to roll my own Employee class and create a relationship to a standard User. I really like how this has worked out as I can keep any Employee specific business logic separate from the User class Membership system.

Since not every User was going to be bound with an employee, this made more sense for my case. It may not for yours, but it is an alternative.

So, I have something like:

public class Employee
{
    public Employee(string name) : this()
    {
        Name = name;
    }

    public virtual string Name { get; set; }
    public virtual string Title { get; set; }
    public virtual decimal Salary { get; set; }
    public virtual decimal Hourly { get; set; }
    public virtual decimal PerDiem { get; set; }
    public virtual string StreetAddress { get; set; }
    public virtual Guid UserId { get; set; }
    public virtual MembershipUser User {
        get
        {
            // note that I don't have a test for null in here, 
            // but should in a real case.
            return Membership.GetUser(UserId);
        }
    }
}
like image 114
nkirkes Avatar answered Sep 28 '22 08:09

nkirkes


See ASP.Net MVC Membership Starter Kit. It provides the Asp.Net MVC controllers, models, and views needed to administer users & roles. It will cut distance in half for you.

Out of the box, the starter kit gives you the following features:

  • List of Users
  • List of Roles
  • User Account Info
  • Change Email Address
  • Change a User's Roles
like image 25
ecleel Avatar answered Sep 28 '22 07:09

ecleel