当我实现RoleProvider类并调用Roles.IsUserInRole(string username, string roleName)时,代码执行首先进入方法'GetRolesForUser(string username)'。为什么会这样呢?我只是想查找该用户是否属于一个角色,而不是迭代所有角色。这是.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();
}