В настоящее время при входе в систему я вставляю строку для пользователя в таблицу AccessSession, которая хранит сведения о том, какие роли у пользователя есть вместе с cookie ASP.NET_SessionId.ASP.NET custom RoleProvider - использование файлов cookie
Мой заказ реализация метода GetRolesForUser этого является:
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();
}
Вопрос у меня есть, я неправильно используя этот подход? Если файлы cookie отключены, то не будет HttpContext.Current.Request.Cookies ["ASP.NET_SessionId"]. Мой альтернативный план состоял в том, чтобы вставить объект AccessSession в сеанс, но это всегда отображается как null, когда пользовательский RoleProvider пытался получить к нему доступ.
Я мог бы использовать cacheRolesInCookie = true, но опять же, что было бы не лучше, чем описанный выше подход, так как отключить куки-файлы нарушили бы функциональность.
Спасибо, Richard