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..