Rails CanCan 和动态生成的能力

发布于 2024-11-20 00:18:29 字数 334 浏览 4 评论 0原文

我想在基于 Mongoid 的 Rails 3 应用程序之上使用 CanCan。我想介绍用户、角色和权限的通用模型。本质上,授权系统应按每个操作进行授权。因此我们想要存储操作 x 角色特权对象。

现在,当涉及到能力 DSL 时,我们可以动态生成能力作为 proivilege 模型中的 after_save 挂钩。但这会导致生产模式下出现问题,因为这些运行时更改只会影响进行权限更改的服务器进程。

另一方面,可以像每个控制器中的 before_filter 一样重新评估所有(用户)能力。但这减慢了每个请求的速度。

目前,我们还没有决定如何解决这个问题。我很感谢每一个建议。

问候 菲利克斯

I would like to use CanCan on top of a Mongoid based Rails 3 application. I would like to introduce general models for user, role and privilege. Essentially the authorization system shall authorize at a per action base. Therefore we want to store action x roles privilege objects.

Now when it comes to the ability DSL we could generate the abilities dynamically as an after_save hook in the proivilege model. But this results in a problem in production mode, cause these runtime changes only affect the server process where the privilege changes were made.

On the other hand one could reevaluate all (the users) abilities as before_filter in every controller. But that slowed down every request.

Just now, we are undecided how to solve this problem. I am thankful for every suggestion.

Regards
Felix

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

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

发布评论

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

评论(1

泛泛之交 2024-11-27 00:18:29

CanCan 使用基于用户模型上的角色列的简单授权系统。

以下是一些很好的链接:
能力
基于角色的授权

为什么需要动态设置权限?除非您有令人信服的理由这样做,否则您只是引入了不必要的复杂性。只需使用正确的能力定义您需要的角色(您可以使用 cancan 在控制器/操作的基础上执行此操作),然后在创建/更新时分配这些角色。

CanCan uses a simple authorization system based on a role column on the User model.

Here are some good links:
Abilities
Role Based Authorization

Why do you need to dynamically set up privileges? Unless you have a compelling reason to do so you are just introducing unnecessary complexity. Just define the roles you need to with the correct abilities (you can do this on a controller/action basis with cancan) and then assign those roles upon creation/update.

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