我有设计工作,但我看到CanCan经常在与Devise一起的教程中提到;它是否意味着是互补的,还是CanCan可以替代Devise?
答案 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 如果用户只能拥有一个角色或多个角色,您还可以选择。
希望这会有所帮助