C# 身份验证 - 将 UserRole 设置为全局变量?
我们的 dba 有一个用于身份验证的 SPROC,仅在验证成功时才返回用户角色。
在我的自定义身份验证类中,ValidateUser 方法通过实体模型和实体模型访问此 SPROC。域服务,并且由于 SPROC 在成功验证时返回 RoleName,因此我已经有了它的一个实例。
当需要在我的自定义 RoleProvider 中运行 GetRolesForUser 方法时,我想我可以编写另一个 SPROC 来再次获取 RoleName,但这似乎有点多余,因为我已经检索了角色。我希望能够在 ValidateUser 方法中缓存用户角色,在 GetRolesForUser 方法中访问它,然后骑到日落。这不仅可以节省编写 SPROC 的时间,而且还可以限制应用程序进行的数据库调用的数量。
想法?
斯科特
Our dba has an SPROC for authentication that returns the User Role only if successful validation occurs.
In my custom authentication class, the ValidateUser method hits this SPROC via an Entity Model & Domain Service, and since the SPROC returns the RoleName on successful validation, I already have an instance of it.
When it comes time to run the GetRolesForUser method in my custom RoleProvider, I suppose I could write another SPROC to grab the RoleName again, but that seems a bit redundant, since I've already retrieved the role. I'd love to be able to cache the User Role in my ValidateUser method, access it in my GetRolesForUser method, and ride off into the sunset. Not only would this save time writing an SPROC, but it would also limit the number of db calls the app is making.
Thoughts?
Scott
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没错。当您运行自定义 RoleProvider 时,您已经拥有可用于存储“RoleName”值的会话状态。或者,您可以扩展 MembershipUser 调用以包含“RoleName”的字符串字段,您可以在其中填充该字符串字段第一次调用,然后分配回 context.user。
我不建议在这里使用缓存对象,因为角色将与用户绑定。
Thats correct. When you are running your custom RoleProvider, you already have the session state which you can use to store the value of "RoleName".. Alternately, you can extend the MembershipUser call to include a string field for "RoleName" which you can populate in the first call and then assign back to the context.user.
I would not suggest Cache object here becuase the Roles would be tied to a user.