我有这个代码检查组成员身份,但似乎需要太长时间来响应和减慢我的应用程序,它需要几乎7-12秒的响应,我只需要检查一个特定的组成员,是否有更快这样做的方法?
public static bool isInRole(UserAccount userAccount,string groupName) { using (var ctx = new PrincipalContext(ContextType.Domain,userAccount.DomainName)) { using (var grp = GroupPrincipal.FindByIdentity(ctx,IdentityType.Name,groupName)) { bool isInRole = grp != null && grp .GetMembers(true) .Any(m => m.SamAccountName == userAccount.UserName); return isInRole; } }
解决方法
我没有你手头的特定AD来测试这个 – 但它可能值得一试:不是为特定用户检查组的成员(可能有成千上万的成员),为什么不检查用户的组成员身份以查看用户是否拥有正确的组?
就像是 :
public static bool isInRole(UserAccount userAccount,string groupName) { using (var ctx = new PrincipalContext(ContextType.Domain,userAccount.DomainName)) using (var user = UserPrincipal.FindByIdentity(ctx,userAccount.UserName)) { bool isInRole = user != null && user.GetAuthorizationGroups() .Any(g => g.Name == groupName); return isInRole; } }
也许这样的事情会更快一点?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。