【发布时间】:2011-05-04 03:44:20
【问题描述】:
当我实现 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();
}
【问题讨论】:
-
很难看出这怎么可能,它是一种抽象方法。发布你的实现。
标签: c# .net roleprovider