Cuando implemento la clase RoleProvider y llamo Roles.IsUserInRole (string username, string roleName), la ejecución del código primero va al método 'GetRolesForUser (string username)'. ¿Por qué es esto? No quiero repetir todos los roles cuando solo estoy buscando el valor único de si ese usuario pertenece a una función. ¿Es esto una limitación de la clase de proveedor de roles de .NET o hay algo que pueda hacer para controlar un poco más la ejecución del código?IsUserInRole llama a GetRolesForUser?
Aquí está el código de llamada
if (Roles.IsUserInRole(CurrentUser.UserName, "Teacher")) {
y aquí está la implementación de IsUserInRole
public override bool IsUserInRole(string username, string roleName) { return true; }
Pero el GetRolesForUser código siempre se implementó por primera vez:
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();
}
difícil ver cómo eso es posible, es un método abstracto.Publica tu implementación de la misma. –