我们的dba有一个用于身份验证的SPROC,只有在成功验证时才返回用户角色。
在我的自定义身份验证类中,ValidateUser方法通过实体模型&amp ;;来触发此SPROC。域服务,并且由于SPROC在成功验证时返回RoleName,我已经有了它的实例。
当我在自定义RoleProvider中运行GetRolesForUser方法时,我想我可以编写另一个SPROC来再次获取RoleName,但这似乎有点多余,因为我已经检索了该角色。我希望能够在我的ValidateUser方法中缓存用户角色,在我的GetRolesForUser方法中访问它,然后骑车到日落。这不仅节省了编写SPROC的时间,而且还限制了应用程序正在进行的db调用次数。
思考?
斯科特
答案 0 :(得分:1)
多数民众赞成。当您运行自定义RoleProvider时,您已经拥有可用于存储“RoleName”值的会话状态。或者,您可以扩展MembershipUser调用以包含“RoleName”的字符串字段,您可以在其中填充该字符串字段第一个调用,然后分配回context.user。
我不建议使用Cache对象,因为角色会绑定到用户。