Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/07/2006, 10:10
Avatar de RootK
RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Cita:
Iniciado por moNTeZIon
Una cosa, por qué haces las comprobaciones en el Global.asax?
Si has implementado la seguridad por formularios, es muy fácil especificar en web.config los accesos a cada página,
solo para aclarar las cosas de hecho muchos proyectos que tengo también hago las autenticaciones mediante el global.asax para cargar todo el perfil del usuario para cargar roles de forma dinámica, ya que a diferencia de colocarlos en el web.config no los puedes hacer tan dinámicos y con ello se hace un poco mas cerrada la aplicacion... te pongo un ejemplo de como lo hago:

Código:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
		{
			if (Request.IsAuthenticated) {
				String[] roles;

                                      if ((Request.Cookies["siteRoles"] == null) || (Request.Cookies["siteRoles"].Value == "")) {
                                    BLL.Account account = new CNCApp.BLL.Account();
                                 roles = account.GetRoles(User.Identity.Name);

                                  String sRoles = "";
					foreach (string role in roles) {
						sRoles += role;
						sRoles += ";";
					}

					FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
						1,								
						Context.User.Identity.Name,			
						DateTime.Now,						
						DateTime.Now.AddHours(1),			
						false,							
						sRoles							
						);

					string sCookie = FormsAuthentication.Encrypt(ticket);
					
					Response.Cookies["siteRoles"].Value = sCookie;
					Response.Cookies["siteRoles"].Path = "/";
					Response.Cookies["siteRoles"].Expires = DateTime.Now.AddMinutes(20);
				}
				else {
					FormsAuthenticationTicket ticket = 
						FormsAuthentication.Decrypt(Context.Request.Cookies["siteRoles"].Value);
					ArrayList userRoles = new ArrayList();
					
					foreach (String role in ticket.UserData.Split( new char[] {';'} )) {
						userRoles.Add(role);
					}
					roles = (String[]) userRoles.ToArray(typeof(String));
				}
				Context.User = new GenericPrincipal(Context.User.Identity, roles);
				
			}

		}
Cita:
Iniciado por moNTeZIon
es muy fácil especificar en web.config los accesos a cada página, también con programación declarativa, a través de los "location path".
precisamente por eso se crea una cookie persistente para cargar el profile de cada usuario y ya despues desde código puedes crear un método compartido por ejemplo IsInRoles para mostrarle o no determinada pagina, control, informacion, etc..etc..

Cita:
Iniciado por Robert79
Al migrar a 2.0 nos llevamos una sorpresa
te recomiendo que te des una vuelta por aqui para que te des una mejor idea.

http://msdn.microsoft.com/msdnmag/is...NET20Security/
http://aspnet.4guysfromrolla.com/articles/120705-1.aspx

Salu2 y cualquier cosa por aqui andaremos..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net