NO REINVENTAR LA RUEDA
Editar: Almacenando UserId, no es necesario. Se puede conseguir desde el MembershipProvider en cualquier momento, siempre y cuando el usuario se registra en claro:
MembershipUser user = Membership.GetUser();
Guid UserID = user.ProviderUserKey;
Me parece que es necesario implementar el proveedor de pertenencia de ASP.NET. Tiene una lectura de este recurso: http://odetocode.com/articles/427.aspx
Además, una buena serie de Scott Guthrie: http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx
En general, toma este enfoque: Uso de autenticación de formularios para validar que un usuario se encuentra. Este es el lado de Autenticación de la seguridad. Es decir, determinar quién es el usuario es lo que dice que es, generalmente con un nombre de usuario y contraseña.
La segunda parte de la seguridad es la Autorización, que ocurre una vez que se sabe quién es el usuario. Básicamente, esto consiste en determinar a qué recursos tiene acceso un usuario autenticado. Un sistema maduro incluirá las siguientes entidades:
User: may contain extended profile information captured on registration
Resource: a page or other resource that can be restricted.
Group: a group of users who can access resources due to their group membership (groups are granted resource access)
Role: a type of user such as Administrator/Developer/Salesperson.
Por lo tanto, para conceder a un usuario acceso a routeid 854 (un recurso) se podría conceder el recurso directamente al usuario o si hay varios usuarios que deben tener Accesos a ese recurso y esos usuarios forman un grupo natural, luego crean ese grupo, otorgan el recurso al grupo y agregan al usuario al grupo.
A continuación, puede acceder User.Resources por un identificador de recurso o puede proteger una página entera usando
if(!User.IsInRole("RoleName"))
{
//redirect to access denied page
}
Hay un montón de cosas buenas disponibles utilizando el modelo de proveedor.
Editar: algo a tener en cuenta si decide almacenar información de perfil sobre sus usuarios: la implementación predeterminada de ProfileProvider no es particularmente buena. Scott Guthrie escribió un buen artículo sobre un proveedor basado en tablas que es mejor: http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx
Estoy utilizando el proveedor MemberShip de ASP.NET para iniciar sesión. Pero es bueno ver algo de información sobre las informaciones personalizadas. :-) Vamos a leer más sobre eso ... – janhartmann
Lo bueno: aquí también hay un buen código de ejemplo: http://asp.dotnetheaven.com/aspnet/doc/security/membership.aspx#auth –
En relación con el almacenamiento del UserId , mira el Editar en la parte superior de mi respuesta. –