autorização com cancan

Post on 28-May-2015

2.395 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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.

TRANSCRIPT

Autorização com CanCanRafael 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, October 22, 2010

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 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

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 terá permissão controlada.

Friday, October 22, 2010

Authorization ObjectsObjects são os objetos acessados pelo Subject.

Friday, October 22, 2010

Métodos do SubjectA 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

Métodos do ObjectA 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

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 na classe Ability

• Fácil de testar com RSpec e TestUnit

Friday, October 22, 2010

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 CanCan é uma boa opção quando:

Friday, October 22, 2010

Obrigado!

Friday, October 22, 2010

top related