Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

Este perfil não tem posição geográfica registrada.

matheuslao

Posts do blog

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Autenticação no Ruby on Rails com Devise

7 de Agosto de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

(Escrevi também este post em meu blog pessoal aqui)

Resolvi utilizar o Devise para autenticação de usuários no rails. Existem outras alternativas como Authologic, Clearance, etc. Não sei responder qual destas é a melhor ou mais completa. Contudo, após uma pesquisa em fóruns e na comunidade ativa do rails, percebi que muitos adotam o Devise para autenticação e o CanCan para autorização (falarei mais adiante sobre ele) em projetos que necessitam destes recursos. Logo, cabe a você, desenvolvedor, escolher os recursos que mais lhe agradem e que resolvam as suas necessidades e problemas.

Um bom espaço para conhecer o Devise é no blog da empresa que desenvolveu a gem. Tanto no blog da PlataformaTec quanto no github do projeto, existem diversos documentos que fornecem uma excelente documentação para quem quer utilizar o Devise.

Neste primeiro post, vou mostrar procedimentos básicos, mas suficientes para integrar e configurar o Devise com seu projeto.

 

Condições Iniciais

Primeiramente, deixo aqui a configuração do ambiente que utilizei para este post:

  • Ubuntu 10.04
  • Ruby 1.8.7 MRI
  • Rubygems 1.3.7
  • Rails 2.3.8

Instalando a GEM

Para minha configuração, segundo a documentação do Devise até a data deste post, a versão da gem que preciso instalar é a 1.0.8. Se você já está utilizando Rails 3, consulte a página do Devise para saber qual a melhor versão indicada.

$ sudo gem install devise -v 1.0.8

Este comando, instalará o devise e o warden (necessário para o correto funcionamento).

Você pode verificar se as gems foram instaladas através de:

$ gem list


Configurando

Precisamos informar ao rails do nosso projeto que este dependerá da gem Devise. No arquivo enviroment.rb adicionamos a seguinte linha:

 

config.gem "devise":version => "1.0.8"

A informação da versão é opcional, porém por questões de compatibilidade com o projeto, achei conveniente informar. Se você desejar vendorizar a gem para a sua aplicação (importar para /vendor/gems) execute:

 

rake gems:unpack

Isto importará a gem Devise, ou ainda

 

rake gems:unpack:dependencies

que vendorizará as gems necessárias e todas as suas dependências (neste caso Devise + warden). Depois rodamos o seguinte comando rake:

rake gems:build

Utilizando o Devise

Vamos criar uma aplicação em que existirá uma seção Eventos onde somente usuários cadastrados no site podem acessar a página. Utilizando o scaffold para agilizar esta parte:

$ script/generate scaffold Event name:string info:text

Feito isto, iniciamos o uso do Devise, onde precisamos rodar primeiramente a instalação do devise em nossa aplicação:

$ script/generate devise_install

Assim que voce rodar o comando acima, 3 passos da configuração deverão ser feitas manualmente:

1. Adicionar em config/enviroments/development.rb a seguinte linha:

config.action_mailer.default_url_options = { :host =>  ‘localhost:3000′ }

(caso o endereço do host de desenvolvimento seja este)

2. Verificar se no arquivo de rotas (config/routes.rb) existe a definição de uma url root como:

map.root :controller => ‘home’

3. Verificar se existe o arquivo de layout padrão (views/layouts) e a chamada de mensagens flash

<p><%= flash[:notice] %></p>
<p><%= flash[:alert] %></p>

Agora, podemos criar nosso model User com a autenticação:

$ script/generate devise User

Caso o model User já exista não tem problema, pois o Devise apenas adicionará todos os recursos necessários para a autenticação.

Repare agora que alguns arquivos foram criados como a migration para criação da tabela de usuários no banco de dados assim como o model user.rb. Vale a pena conferir a estrutura e o conteúdo destes arquivos para entender quais campos são criados e habilitar os recursos necessários para seu projeto.

Verifique também em seu arquivo config/routes.rb se foi adicionado a seguinte linha:

devise_for :users

Feito isto, atualizamos nosso banco de dados com:

$ rake db:migrate

Observe que a autenticação já funciona! No nosso caso, possuímos os seguintes endereços:

  • localhost:3000/users_sign_in : fazer login (iniciar sessão)
  • localhos:3000/users_sign_out :fazer logout (destruir sessão)
  • localhost:3000/users_sign_up : cadastrar novo usuário

No controller de Eventos, basta adicionar

 

before_filter :authenticate_user!

que habilitará a necessidade da autenticação de um usuário para todas as actions do Evento.

Conclusão

Em outros posts, falarei mais sobre algumas configurações que o Devise proporciona. Mas nada impede de olhar a documentação dele que é muito fácil e completa! Recomendo também fortemente assistir os episódios do RailsCasts sobre o Devise.

Valeu!