Hi guys, Following is a simple before filter under rails 2.02
users_controller.rb
class UsersController < ApplicationController
skip_before_filter :authorize, :only => [:login]
## CRUD actions #####
def login if request.post? session[:user] = nil u = User.find_by_email params[:user][:email] unless u && u.password_equal?(params[:user][:password]) session[:user] = u uri = session[:original_uri] session[:original_uri] = nil redirect_to(uri || {:action => :index}) else flash[:notice] = "the user name and email doesn't match!" end end end
end
application_controller.rb
class ApplicationController < ActionController::Base helper :all # include all helpers, all the time
# See ActionController::RequestForgeryProtection for details # Uncomment the :secret if you're not using the cookie session store protect_from_forgery # :secret => '4477fc7de98463482e367d7b0d4279eb'
before_filter :authorize
protected
def authorize p "step to authorize" unless session[:user] flash[:notice] = "please login first..." session[:original_uri] = request.request_uri redirect_to(:controller => "users", :action => "login") end end end
when I get the url http://localhost:3000/users, it always do loop in "authorize" action and "step to authorize" appears several times and I got the error
"Redirect Loop Firefox has detected that the server is redirecting the request for this address in a way that will never complete. The browser has stopped trying to retrieve the requested item. The site is redirecting the request in a way that will never complete. * Have you disabled or blocked cookies required by this site? * NOTE: If accepting the site's cookies does not resolve the problem, it is likely a server configuration issue and not your computer."
what's up? It seems it should work well, can anybody point this problem? I am under ubuntu 8.04 LTS, thanks.