views:

67

answers:

1

I am working on a web application (C#, VS2008 with Entity modelling) and within about a year from now, they will ask me to add some login/authentication/authorization options to this site that can be managed through the site. Which is fine by me but I would like to know some good ways to implement such functionality.

Visitors for this site can be anyone, but they would have to register somehow before they can access the site, so we can keep track of unique visitors. Some visitors will get some additional access based upon their roles and in some cases a visitor will have their own, personalized start page on their site.

I have three alternatives right now: 1) Write a new system from scratch. 2) Use the functionality that VS provides. 3) Use the OpenID API from Google and a few others. (And add a role system on top of this.)

Are there more (free) options to manage users and roles?

+2  A: 

I think the most effective way you can handle this is to combine 2) and 3), and write a .Net based membership provider that implements OpenID. That is, of course, if your customers/managers want OpenID support - if not (and be clear when you ask), just do regular .NET Membership. Don't reinvent the wheel.

Tomas Lycken
Technically, the site is for internal use but customers (and everyone else) should have free access to view the contents of the site. (But not modify it.) However, we would like to know a bit more about those visitors, no matter how little the information, so we can count the number of unique visitors.Some visitors will be granted additional privileges, like making suggestions to have some of the content on the site changed because it's invalid, outdated or just wrong.The real administration would be done through internal tools, btw.
Workshop Alex
For that scenario, simply implement a set of Roles - for example, you could have a "Customer" role for read-only, "Feedbacker" for making suggestions, "Moderator" for internal moderation staff and "Admin" for high-level moderators.
Tomas Lycken