Когда я реализую класс RoleProvider и вызываю Roles.IsUserInRole (строковое имя пользователя, строковое имя роли), выполнение кода сначала переходит к методу GetRolesForUser (строковое имя пользователя). Почему это? Я не хочу перебирать все роли, когда просто ищу единственное значение того, принадлежит ли этот пользователь к одной роли. Является ли это ограничением класса поставщика ролей .NET или я могу что-то сделать, чтобы немного больше контролировать выполнение кода?
Вот вызывающий код
if (Roles.IsUserInRole(CurrentUser.UserName, "Teacher")) {
А вот реализация IsUserInRole
public override bool IsUserInRole(string username, string roleName) { return true; }
Но код GetRolesForUser всегда реализуется первым:
public override string[] GetRolesForUser(string username) {
string[] roles = GetAllRoles();
List<string> userRoles = new List<string>();
foreach (string role in roles) {
if (IsUserInRole(username, role)) {
userRoles.Add(role);
}
}
return userRoles.ToArray();
}