如何使 Roles.ApplicationName 线程安全?

发布于 2024-10-21 06:58:32 字数 555 浏览 7 评论 0原文

我目前正在编写一个用户管理应用程序,它在单个 aspnetdb 实例中管理用户。该单个实例包含多个“应用程序”,所有应用程序都具有针对各个应用程序分配的角色。

由于每个用户可以是多个应用程序的成员,因此我使用 Roles.ApplicationName 循环遍历每个配置的应用程序,然后确定他们属于哪些角色。检查每个应用程序后,我将 Roles.ApplicationName 设置回原始应用程序,即管理应用程序。

我遇到的问题是,当多个用户各自查看一个单独的应用程序并发出 Roles.GetAllRoles() 请求时。大多数情况下,返回的角色是针对预期应用程序的,但有时由于每个应用程序的 Roles.ApplicationName 上循环的其他请求,会返回错误的应用程序角色。

我已经读到 Roles.ApplicationName 不是线程安全的,因此不应该在 Web 应用程序中使用,但我更希望有一个解决方案,而不是必须在应用程序中重写角色模型。

另外,aspnetdb 应用程序是通过此管理系统创建的,因此我无法创建多个 RoleProvider,每个应用程序一个。

I am currently writing a user management application which administers users in a single aspnetdb instance. This single instance contains multiple "applications" which all have roles assigned against the individual applications.

As each user can be a member of multiple applications I use Roles.ApplicationName to cycle through each configured application and then determine which roles they are a member of. After checking each application I set the Roles.ApplicationName back to the original application which is the management application.

The problem I am having is when multiple users eachview an individual application and a request for Roles.GetAllRoles() is made. Most of the time the roles that come back are for the intended application but sometimes the wrong application's roles come back due to other requests cycling over the Roles.ApplicationName per application.

I've since read that Roles.ApplicationName is not threadsafe and therefore should not be used in a web application but I would prefer to have a solution to this rather than having to rewrite the role model in the application.

Also, The aspnetdb applications are created via this administration system and therefore I cannot create multiple RoleProviders, one per application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

似梦非梦 2024-10-28 06:58:32

为什么不编写一个包装器来执行此操作,在我看来,您可以实现自己的角色提供程序,然后进行适当的同步。

Why dont you write a wrapper to do this, off the top of my head you could implement your own role provider, and then put the appropriate synchronization in place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文