Ti ringrazio per avermi risposto, sto lottando da 3 giorni...
al momento faccio qualcosa di analogo agli esempi che hai postato in pratica ti riporto alcune parti del mio codice:
Login.cs
codice:
if (usersEntity != null)
{
//Se l' utente esiste
if (usersEntity.id_user != 0)
{
//Creo il cookie
Accesso accesso = new Accesso();
accesso.AuthenticateUser(usersEntity.nominativo, 45, true, "dati Utente", Response);}
}
Accesso.cs
codice:
public void AuthenticateUser(string username, int timeout,
bool persistent, string userData, HttpResponse response)
{
// Crea il ticket di autenticazione
FormsAuthenticationTicket ticket =
new FormsAuthenticationTicket(
1,
username,
System.DateTime.Now,
persistent ? DateTime.Now.AddMinutes(45) :
DateTime.Now.AddMinutes(timeout),
persistent,
userData,
FormsAuthentication.FormsCookiePath);
// Produce la stringa crittografata a partire dal ticket,
// utilizzabile come cookie
string enc = FormsAuthentication.Encrypt(ticket);
// Crea il cookie e lo aggiunge all'insieme dei cookie
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
enc);
cookie.Path = FormsAuthentication.FormsCookiePath;
//cookie.Secure = FormsAuthentication.RequireSSL;
if (ticket.IsPersistent)
cookie.Expires = ticket.Expiration;
response.Cookies.Add(cookie);
// Ridirige all'URL che ha causato il login
response.Redirect(FormsAuthentication.GetRedirectUrl(
username,
persistent));
}
nell' app.config è impostato in questo modo:
codice:
<authentication mode="Forms">
<forms name="ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="50"
path="/"
requireSSL="true"
slidingExpiration="true"
cookieless="UseDeviceProfile"
defaultUrl="home.aspx"/>
</authentication>
al momento è come se fosse sempre Checkato il ricordami per testarlo poi successivamente lo modificherò. Solo non riesco a capire se il modo che sto utilizzando è corretto oppure devo inserire qualcosa nel global.asax, nel metodo Application_AuthenticateRequest anche perchè controllando gli esempi che m hai postato settano qualcosa all' interno che sinceramente non riesco a capire a cosa servono...
ESEMPIO global.asax
codice:
public void Application_AuthenticateRequest(object sender, EventArgs e)
{
//Get authentication cookie
string sCookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[sCookieName];
//If the cookie cannot be found then do not issue the ticket
if (authCookie == null)
{
return;
}
//Get the tictet and rebuild the principal and identity
FormsAuthenticationTicket authTicket =
FormsAuthentication.Decrypt(authCookie.Value);
//Get the Roles
string[] sRoles = { "Group Administrator", "Other" };// authTicket.UserData.Split(new char[] { '|' });
//Build the identity
System.Security.Principal.GenericIdentity userIdentity =
new System.Security.Principal.GenericIdentity(authTicket.Name);
//Build the Principal
System.Security.Principal.GenericPrincipal userPrincipal =
new System.Security.Principal.GenericPrincipal(userIdentity, sRoles);
Context.User = userPrincipal;
}
poi una volta presa in carico dalla home la richiesta decodifico il value del cookie e procedo con la navigazione del sito, salvando nelle session i dati di navigazione in modo da poter gestire l' utente finchè non chiude il browser altrimenti controllo se il cookie esiste e riprendendo i dati e salvandoli nella session continuo la navigazione ( faccio questo per due motivi, il primo è prevenire l' eventuale disabilitazione da parte dell' utente dei cookie, la seconda è che in questo modo dovrebbe essere più leggera la navigazione nel sito attraverso il solo controllo della session anziché andare ogni volta a recuperare i dati da dentro il cookie...)
Che tu sappia come procedimento è corretto o esiste qualche metodo che sfrutta a pieno le potenzialità dell' Asp.NET? Se si, a cosa serve la configurazione nel global.asax (ancora non riuscito a capire bene se è utile utilizzarla, e come funziona).
Di nuovo grazie