Actuellement, lors de la connexion, j'insère une ligne pour l'utilisateur dans une table AccessSession qui conserve les détails des rôles de l'utilisateur avec le cookie ASP.NET_SessionId.ASP.NET personnalisé RoleProvider - utilisation de cookies
Ma mise en œuvre personnalisée de la méthode GetRolesForUser de ceci est:
public override string[] GetRolesForUser(string username)
{
List<string> roles = new List<string>();
string[] rolesArray;
char[] splitter = { '|' };
string sessionId = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value;
AccessSession sessionObject = AccessSession.Get(sessionId);
if (sessionObject != null)
{
rolesArray = sessionObject.Roles.Split(splitter);
foreach (string role in rolesArray)
{
if (!String.IsNullOrEmpty(role))
{
roles.Add(role);
}
}
}
return roles.ToArray();
}
La question que j'est que je me trompe en utilisant cette approche? Si les cookies sont désactivés, il n'y aura pas de HttpContext.Current.Request.Cookies ["ASP.NET_SessionId"]. Mon plan alternatif consistait à insérer un objet AccessSession dans Session mais celui-ci apparaît toujours nul lorsque le RoleProvider personnalisé essayait d'y accéder. CacheRolesInCookie = true, mais encore une fois cela ne serait pas mieux que l'approche ci-dessus que la désactivation des cookies casserait la fonctionnalité.
Merci, Richard