Ok mira, como dice @mxgxw, utilizando el MemberShipProvider y RoleProvider es utilizar las clases que microsoft pone a disposicion de los desarrolladores para que pueden implementar su modelo de roles, usuarios (y sesiones). Alli realmenta queda a opcion tuya si lo utilizas y haces los pasos necesarios para implementarlo, o simplemente puedes pensar una manera de validar a los usuarios, ya depende de ti, asi como la solucion que te propone mxgxw para que puedas implementar los usuarios y roles.
Bueno, por si t sirve, voy a colocar lo que tendrias que configurar para seguir el modelo de Microsoft (utilizando MembershipProvider y RoleProvider):
Vamos a utilizar las 3 primeras tablas tablas con los campos basicos que puso mxgxw:
Tabla usuarios:
IdUsuario (PK)
Tabla grupos:
IdGrupo (PK)
Tabla usuarios_grupo
IdGrupo (PK)(FK)
IdUsuario (PK)(FK)
Serian los usuarios con el Rol (o grupo) al que pertenecen.
Bueno como te dije antes, en tu proyecto puedes crear 2 carpetas: la primera para "
Docentes", y la segunda
"Normal".
Dentro de cada una de tus carpetas vas a poner las paginas que tenga acceso el grupo de usuarios.
Una vez tienes hecho, hay que configurar el acceso a las carpetas a partir del Web.Config:
<location path="Alumnos">
<system.web>
<authorization>
<allow roles="ALU" />
</authorization>
</system.web>
</location>
<location path="Alumnos">
<system.web>
<authorization>
<allow roles="PRF" />
</authorization>
</system.web>
</location>
Ahora debes de implementar el MembershipProvider que sera el encargado de validar el usuario, y el RoleProvider que se encargara de manejar los roles del usuario.
Primero, hay que implementar el
MembershipProvider: Lo unico que itienes que hacer es crear una nueva clase en tu proyecto, y en esa nueva clase que has creado, tienes que hacer que herede de la clase
MembershipProvider, cuando la heredes, apareceran un monton de metodos (esto es xq es una clase abstracta), y el unico metodo que nos interesa ahorita es el metodo
ValidateUser:
Apues en este metodo vas a escribir la logica para validar al usuario, por ejemplo:
Public Overrides Function ValidateUser(username As String, password As String) As Boolean
'Aqui vas a establecer toda tu logica para validar las credenciales de usuario, si utilizas, LINQ, EF, ADO.NET para ir a la BD y consultar si es valido
'lo que tienes que regresar es un TRUE si es valido, y un FALSE si no es correcto el login.
End Function
Una vez tienes el metodo completo, los demas metodos los podes ignorar (al menos en este caso), y ahora hay que configurar los metodos de los roles y que funciones todo correctamente.
Ahora, tienes que crear una nueva clase, y en esa clase vas a heredar de la clase
RoleProvider y de nuevo te van aparecer un monton de metodos, los que nos interesaran seran los siguientes:
Public Overrides Function IsUserInRole(username As String, roleName As String) As Boolean
'Creas la logica para ir a comprobar a tu BD si el usuario se encuentra en el rol o no y de nuevo regresas un TRUE o FALSE
End Function
Public Overrides Function GetRolesForUser(username As String) As String()
'Creas la logica para ir a extraer a la BD los roles a los que pertenece el usuario, lo que tienes q regresar en un Array de tipo String, donde esten
'contenidos todos los roles a los que pertenece el usuario
End Function
Una vez ya tienes los metodos para el servidor, solo te faltaria agregar tu MembershipProvider y tu RoleProvider al archivo del Web.Config:
<system.web>
<membership defaultProvider="CustomMP">
<providers>
<clear />
<add name="CustomMP" type="Aqui pones el nombre de la clase que creastes de tu proyecto con todo y su NameSpace EJ: Proyecto.ClaseMembership " />
</providers>
</membership>
<roleManager defaultProvider="CustomRPr" enabled="true" cacheRolesInCookie="true">
<providers>
<clear />
<add name="CustomRP" type="Aqui pones el nombre de la clase que creastes de tu proyecto con todo y su NameSpace EJ: Proyecto.ClaseRol" />
</providers>
</roleManager>
</system.web>
Y eso es todo lo que tienes que hacer y ya lo tienes configurado, ASP.NET se encargara de ver los permisos delo usuario que entre a tu sitio web si tiene permisos, ya no haces nada mas..
Esta es la forma que Microsoft recomienda para sus sitios web, utilizando las 2 clases con que viene ASP, pero si tu quieres hacer una Autorizacion propia puedes hacerlo, yo te pongo el ejemplo de como se hace normalmente en ASP.NET.
Si quiere mayor informacion para utilizar las etiquetas
location en el Web.Config, puedes ver un link del guille, o en MSDN hay muchos ejemplos de como validar permisos a carpetas o paginas especificas.
http://www.elguille.info/net/aspnet/indicar_elementos_publicos_privados.htmBueno, aunque te soy sincero, nunca he desarrollado un sitio en ASP.NET, pero cuando estaba aprendiendo el modo de autenticacion para ASP.NET MVC explicaban la diferencia de como se autenticaba en un sitio ASP.NET y como cambiaba para un sitio ASP.NET MVC, asi que, asi aprendi... jajaja xD