Ciao,
prima di tutto grazie per la risposta!
Allora, ho lasciato da parte la classo RoleProvider, in quanto sto cercando di gestire l'evento Application_AuthenticateRequest nel file global.asax
if (HttpContext.Current.User != null)
{
if (Request.IsAuthenticated == true)
{
string userInformation = String.Empty;
string[] roles;
if ((Request.Cookies["cnstUserRole"] == null) ||(Request.Cookies["cnstUserRole"].Value == ""))
{
if (HttpContext.Current.User.Identity.Name == "FINANCE")//in realtà ho passato il ruolo, e non il nome dell'utente
roles = new string[1] { "FINANCE" };
else if (HttpContext.Current.User.Identity.Name == "COMMERCIAL")
roles = new string[1] { "COMMERCIAL" };
else
roles = new string[1] { "public" };
//a questo punto mi ciò che mi aspetto è un applicazione nella quale sono stati definiti questi 3 ruoli. Senza database
userInformation = roles[0] + ";" + Context.User.Identity.Name;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // version
User.Identity.Name, // user name
DateTime.Now, // issue time
DateTime.Now.AddHours(1), // expires every hour
false, // don't persist cookie
userInformation
);
String cookieStr = FormsAuthentication.Encrypt(ticket);
Response.Cookies["cnstUserRole"].Value = cookieStr;
Response.Cookies["cnstUserRole"].Path = "/";
Response.Cookies["cnstUserRole"].Expires = DateTime.Now.AddMinutes(1);
}
else
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Context.Request.Cookies["cnstUserRole"].Value);
userInformation = ticket.UserData;
string[] cookieInfo = userInformation.Split(new char[] { ';' });
roles = new string[1] { cookieInfo[0] };
}
Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, roles);
}
}
Questo e' il codice che ho inserito nel global.asax,
Nel web.config, ho dichiarato le cartelle con i permessi di accesso ai ruoli sopra definiti.
nella pagina di login, invece ho inserito questo metodo
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(ruolo, true);
if (Request.QueryString["ReturnUrl"] == null)
Response.Redirect(reader.GetString(4), true);