我应该和Canise一起使用CanCan吗?

时间:2011-07-18 16:35:29

标签: ruby-on-rails

我有设计工作,但我看到CanCan经常在与Devise一起的教程中提到;它是否意味着是互补的,还是CanCan可以替代Devise?

2 个答案:

答案 0 :(得分:24)

CanCan涵盖授权 - 允许谁做什么。设计处理身份验证 - 你是真的吗?这就是他们互相补充的方式。你可以使用一个而不用另一个。

请参阅示例http://techoctave.com/c7/posts/34-authentication-vs-authorization

答案 1 :(得分:1)

设计处理身份验证(登录和注销,处理会话等)但它不处理授权(允许访问视图或操作)。

如果您有一个非平凡的应用程序,那么您将需要授权和可能的角色。

CanCan是一个非常简单的授权Gem,如果您的角色很少,并且授权规则非常简单,它可以很好地工作。 http://railscasts.com/episodes/192-authorization-with-cancan

如果您有很多角色或更复杂的授权规则,那么我建议使用declarative_authorization http://railscasts.com/episodes/188-declarative-authorization

两者都适用于Devise,以及Rails 2或Rails 3。

对于实现角色,您有两种选择:在数据库中的角色和用户之间拥有角色表和连接表;或使用role_model插件http://railscasts.com/episodes/189-embedded-association 如果用户只能拥有一个角色或多个角色,您还可以选择。

希望这会有所帮助