Autorização com CanCan
Rafael Carvalho
@rafaeldx7
Friday, October 22, 2010
Objetivo
• Abordar as funcionalidades do CanCan
• Fazer um comparativo com o Acl9.
Friday, October 22, 2010
O que é CanCan?
É uma ferramenta de autorização para
aplicações Rails.
É fornecida como uma rubygem ou
plugin.
Friday, Oct...
Autorização ≠ Autenticação
Friday, October 22, 2010
Autenticação
Processo que verifica se alguém é de fato
quem declara ser.
Pode ser feito através de senha, cartão,
leitura b...
O CanCan não faz isso!
Friday, October 22, 2010
O Acl9 não faz isso!
Friday, October 22, 2010
Autenticação para Rails
• Devise
• AuthLogic
• Restful Authentication
• Clearance
Friday, October 22, 2010
Autorização para Rails
• CanCan
• Acl9
• Declarative Authorization
• Role Requirement
Friday, October 22, 2010
Visão geral do Acl9
Friday, October 22, 2010
Acl9 é baseado em papéis (roles)
E uma tabela roles referente a esse model.
Friday, October 22, 2010
Definindo um Subject
E criar a tabela roles_users para associação entre Roles e Users (Subjects).
Subject é o objeto que te...
Authorization Objects
Objects são os objetos acessados pelo Subject.
Friday, October 22, 2010
Métodos do Subject
A chamada ao acts_as_authorization_subject
define os seguintes métodos:
subject.has_role?(role, object =...
Métodos do Object
A chamada ao acts_as_authorization_object define os
seguintes métodos:
object.accepts_role?(role_name, su...
Definindo as Regras de Acesso
Friday, October 22, 2010
Visão Geral do CanCan
Friday, October 22, 2010
Principais Características
do CanCan
• Não baseado em papéis (mas pode ser)
• Bastante flexível
• Permissões centralizadas ...
Classe de Permissões
Friday, October 22, 2010
Testando as Permissões
Friday, October 22, 2010
Autorizando as Actions
Friday, October 22, 2010
Mostrando Links
Esse método can? será chamado para o current_user.
Friday, October 22, 2010
Comparativo
Friday, October 22, 2010
Model no Acl9
Friday, October 22, 2010
Model no CanCan
Nada.
Friday, October 22, 2010
Model no CanCan
A menos que seja necessário criar papéis.
Friday, October 22, 2010
Controller no Acl9
Friday, October 22, 2010
Controller no CanCan
Friday, October 22, 2010
Flexibilidade no CanCan
Friday, October 22, 2010
Vantagens do CanCan
• Simplicidade é essencial
• Flexibilidade é necessária
• Centralização das regras é interessante
O Ca...
Referências
• http://github.com/ryanb/cancan
• http://railscasts.com/episodes/192-
authorization-with-cancan
• http://asci...
Obrigado!
Friday, October 22, 2010
Upcoming SlideShare
Loading in …5
×

Autorização com CanCan

2,814 views
2,646 views

Published on

CanCan é uma ferramenta de autorização para aplicações Rails. Nessa apresentação o objetivo consiste em abordar uma visão geral do CanCan fazendo um comparativo com o Acl9.

Published in: Technology

Autorização com CanCan

  1. 1. Autorização com CanCan Rafael Carvalho @rafaeldx7 Friday, October 22, 2010
  2. 2. Objetivo • Abordar as funcionalidades do CanCan • Fazer um comparativo com o Acl9. Friday, October 22, 2010
  3. 3. O que é CanCan? É uma ferramenta de autorização para aplicações Rails. É fornecida como uma rubygem ou plugin. Friday, October 22, 2010
  4. 4. Autorização ≠ Autenticação Friday, October 22, 2010
  5. 5. Autenticação Processo que verifica se alguém é de fato quem declara ser. Pode ser feito através de senha, cartão, leitura biométrica, etc. No nosso caso: é logar um usuário. Pode ser feito através de senha ou OpenID, por exemplo. Friday, October 22, 2010
  6. 6. O CanCan não faz isso! Friday, October 22, 2010
  7. 7. O Acl9 não faz isso! Friday, October 22, 2010
  8. 8. Autenticação para Rails • Devise • AuthLogic • Restful Authentication • Clearance Friday, October 22, 2010
  9. 9. Autorização para Rails • CanCan • Acl9 • Declarative Authorization • Role Requirement Friday, October 22, 2010
  10. 10. Visão geral do Acl9 Friday, October 22, 2010
  11. 11. Acl9 é baseado em papéis (roles) E uma tabela roles referente a esse model. Friday, October 22, 2010
  12. 12. Definindo um Subject E criar a tabela roles_users para associação entre Roles e Users (Subjects). Subject é o objeto que terá permissão controlada. Friday, October 22, 2010
  13. 13. Authorization Objects Objects são os objetos acessados pelo Subject. Friday, October 22, 2010
  14. 14. Métodos do Subject A chamada ao acts_as_authorization_subject define os seguintes métodos: subject.has_role?(role, object = nil) subject.has_role!(role, object = nil) subject.has_no_role!(role, object = nil) subject.has_roles_for?(object) subject.has_role_for?(object) subject.roles_for(object) subject.roles_for(object).map(&:name).sort subject.has_no_roles_for!(object) subject.has_no_roles! Friday, October 22, 2010
  15. 15. Métodos do Object A chamada ao acts_as_authorization_object define os seguintes métodos: object.accepts_role?(role_name, subject) object.accepts_role!(role_name, subject) object.accepts_no_role!(role_name, subject) object.accepts_roles_by?(subject) object.accepts_role_by?(subject) object.accepts_roles_by? object.accepts_roles_by(subject) Friday, October 22, 2010
  16. 16. Definindo as Regras de Acesso Friday, October 22, 2010
  17. 17. Visão Geral do CanCan Friday, October 22, 2010
  18. 18. Principais Características do CanCan • Não baseado em papéis (mas pode ser) • Bastante flexível • Permissões centralizadas na classe Ability • Fácil de testar com RSpec e TestUnit Friday, October 22, 2010
  19. 19. Classe de Permissões Friday, October 22, 2010
  20. 20. Testando as Permissões Friday, October 22, 2010
  21. 21. Autorizando as Actions Friday, October 22, 2010
  22. 22. Mostrando Links Esse método can? será chamado para o current_user. Friday, October 22, 2010
  23. 23. Comparativo Friday, October 22, 2010
  24. 24. Model no Acl9 Friday, October 22, 2010
  25. 25. Model no CanCan Nada. Friday, October 22, 2010
  26. 26. Model no CanCan A menos que seja necessário criar papéis. Friday, October 22, 2010
  27. 27. Controller no Acl9 Friday, October 22, 2010
  28. 28. Controller no CanCan Friday, October 22, 2010
  29. 29. Flexibilidade no CanCan Friday, October 22, 2010
  30. 30. Vantagens do CanCan • Simplicidade é essencial • Flexibilidade é necessária • Centralização das regras é interessante O CanCan é uma boa opção quando: Friday, October 22, 2010
  31. 31. Referências • http://github.com/ryanb/cancan • http://railscasts.com/episodes/192- authorization-with-cancan • http://asciicasts.com/episodes/192- authorization-with-cancan Friday, October 22, 2010
  32. 32. Obrigado! Friday, October 22, 2010

×