I’m building a web application, and I would like to make certain functions on the front end visible when a user is logged in as an administrator.
I am using the default membership provider, but I have an extension table called userFields which i use for storing user settings.
I have just added a UserType field to this table, and am now considering how will be best to pick this up on the pages.
I don’t really want to have to add extra code to each controller method to get this information out of the db, and pass it through.
Is there a better way to do this, either using the built in roles settings in asp.net membership, OR is there a cool way I can expose this information from my db, in the same way user.identity.name works or (User.Identity.Name).ProviderUserKey;
As long as you are using the standard authentication method that places the user object in the context it shouldn’t be too hard. In your view, use Html.RenderPartial and the appropriate controller to accomplish what you want like this…
/Home/Index View:
/Home/Admin View:
/Shared/Empty View:
/Home Controller:
That should work… It’s how I do it. If it’s wrong, hopefully someone smarter posts a better answer so we can both learn
EDIT:
Just thought of something else… If your user object implements IPrincipal, you could extract it from the context, cast it to your user type and have the information right in the user class…
Kind of like this
Then the admin view logic could look like this: