首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveDirectoryMembershipProvider和SqlRoleProvider:维护?

ActiveDirectoryMembershipProvider和SqlRoleProvider:维护?
EN

Stack Overflow用户
提问于 2010-12-18 08:57:09
回答 1查看 462关注 0票数 0

在一个新项目中,我计划使用ActiveDirectoryMembershipProvider和SqlRoleProvider分别提供身份验证和授权。

我不清楚的一件事是如何处理维护--从Active Directory中删除已登录并分配了角色的用户时,如何删除SqlRoleProvider使用的映射表中的孤立记录?我相信这是aspnet_UsersInRoles的桌子。

用户可以定期查询Active Directory中的禁用用户,然后遍历该列表,调用Roles.RemoveUserFromRoles( UserId,Roles.GetRolesForUser(UserId)),其中UserId也在aspnet_UsersInRoles中。我可以想象,对于一个大型组织来说,速度非常慢。

或者,对于UsersInRoles中的每个distint UserId,查询ActiveDirectory并确保userAccountControl属性的位掩码没有指示帐户被禁用。对于大量的应用程序用户来说,效率也非常低。

一种更难看但更有效的方法是存储上次登录日期,并定期清除未登录的用户的角色关联,例如,6个月。这可能会引起头痛。

我很想听听你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-18 09:59:41

是的,您必须手动进行清理。你需要即时更新吗?如果您可以进行夜间运行的批处理,这将是高效的,因为它不是在核心运行时间运行的。或者,一旦您意识到角色的删除,在另一个线程中启动一个进程来处理该角色的删除可能是有意义的。删除每个用户访问的角色会在用户之间共享冲击,并使他们认为应用程序速度很慢。

角色被删除了多少次?如果很多,那么考虑批处理过程,如果几年一次,那么在某些过程中将其应用到应用程序中可能不是什么大问题。

至于方式,您也可以使用API,但是aspnet_UsersInRoles和aspnet_roles表也可以通过SQL脚本轻松地自行擦除。

HTH。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4475983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档