Rails - Athenticate - Como impedir acessos nao autorizados

5 respostas
Snerol

Salve, procurei pelo fórum essa questão e acabei não encontrando, peço desculpa caso já tenha sido discutida.

Bom, vamos la:

Estou fazendo uma aplicação onde os usuarios possam cadastrar informações. Criei um login seguro com hash + salt, protecao contra ataques cross-site e uma whitelist dos controladores para os que não estão cadastrados. Até aqui tudo funciona perfeitamente.

O problema eh que uso a mesma views do controlador para atividades administrativas, e escondo da view de quem não esta logado usando um simples:

<% if session[:usuario_id] %> ... <% end %>

porém nao sei como evitar que alguém digite no browser no controlador com a view index liberada uma ação que não quero que tenham acesso.

Exemplo, quero permitir o acesso a:

mas não a ação:

do mesmo controlador.

Alguém tem alguma idéia de como posso fazer isso sem precisar criar um controlador novo e como novas views so para a listagem?

Obrigado,

Snerol

5 Respostas

Snerol

Bom, foi mais fácil que imaginava... aliás, sinto-me envergonhado por não ter pensado nisso. Bom, deixo abaixo como resolvi o problema:

Bom, no controlador que queria evitar as açoes indesejáveis pus:

class ExemplosController < ApplicationController
  before_filter :verifica_permissao, :except => [:index, :show]

temos que definiro o metodo :verifica_permissao em algum lugar, melhor se na ApplicationController, assim poderemos usar onde quisermos:

class ApplicationController < ActionController::Base

...

protected 

  def verifica_permissao
    unless session[:usuario_id]  # no meu caso faço a autenticação da sessao com o a id do usuario
      session[:original_uri] = request.request_uri # para o browser não esquecer o pedido 
      flash[:notice] = "Faça o login"
      redirect_to "/login" # meu formulário de login (precisa ser definido nas config/routes.rb)
    end
  end

end

Espero ter sido claro, qualquer coisa estamos ai...

Snerol

P

Uma sugestão…

Pq não usa

http://github.com/technoweenie/restful-authentication/tree/master

Juk

phstc:
Uma sugestão…

Pq não usa

http://github.com/technoweenie/restful-authentication/tree/master


Concordo! Sugiro usar o restful-authentication.

Felagund

Ultimamente o restfull_authentication ta em desuso, o pessoal ta usando mais o Authlogic.

[]'s

P

Felagund:
Ultimamente o restfull_authentication ta em desuso, o pessoal ta usando mais o Authlogic.

[]'s

Poxa… fique até triste agora… eu nao conhecia esse Authlogic… :frowning:

Fiz minha app com restfull_auth… :frowning:

Tem até integraçao com OpenID o Authlogic… :frowning:

http://railscasts.com/episodes/170-openid-with-authlogic

Criado 2 de agosto de 2009
Ultima resposta 12 de ago. de 2009
Respostas 5
Participantes 4