Rails - Athenticate - Como impedir acessos nao autorizados

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

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:

[code]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[/code]

Espero ter sido claro, qualquer coisa estamos ai…

Snerol

Uma sugestão…

Pq não usa

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

[quote=phstc]Uma sugestão…

Pq não usa

http://github.com/technoweenie/restful-authentication/tree/master[/quote]
Concordo! Sugiro usar o restful-authentication.

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

[]'s

[quote=Felagund]Ultimamente o restfull_authentication ta em desuso, o pessoal ta usando mais o Authlogic.

[]'s[/quote]

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