# Problems w/ before\_filter getting ignored

**URL:** <https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558>\
**Category:** Rails\
**Created:** [November 5, 2008, 5:41am UTC](https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558 "2008-11-05T05:41:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![clemrock](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c57346/32.png) [@clemrock](https://www.ruby-forum.com/u/clemrock)\
**Post date:** [November 5, 2008, 5:41am UTC](https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558/1 "2008-11-05T05:41:51Z")

</div>

Hello,  
I’m setting up an authentication module that will be called from  
application.rb. I want to save a rrequest.request\_uri into a  
session to be used as a place holder that  
will take users back to the page they were on before they logged in.  
I’m trying to call the store\_location method for all methods EXCEPT  
login by putting login in an except before filter.

For some reason, when I login the last request.request\_uri address that  
is stored in the session is /login. For some reason, the  
store\_location method is still getting called when the login method is  
called and then throws a “Redirect Loop” message in the brower

Here’s the authentication module code:

```auto
module Authentication
  def store_location
    session['return-to'] = request.request_uri
  end

  def login
    user = User.find_authenticated_user(params[:username],
params[:password])
    unless user.blank? || user.nil?
      session[:user] = user
    end
    redirect_to store_location
  end
end

and here's the code I have so far in application.rb
```

```auto
class ApplicationController < ActionController::Base

  before_filter :verify_user, :except => :login
  before_filter :store_location, :except => :login

  include Authentication

  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 => 'f2966dd9b280aee941288062544d2aa9'

  def index
  end
end
```

Any ideas how I can make this work?

Thanks,  
Clem

---

<div class="post-metadata">

**Author:** ![clemrock](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c57346/32.png) [@clemrock](https://www.ruby-forum.com/u/clemrock)\
**Post date:** [November 5, 2008, 5:57am UTC](https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558/2 "2008-11-05T05:57:27Z")

</div>

hmmm

I’m just guessing here, but have you tried creating a method in your  
ApplicationController called store\_location, which then makes the  
appropriate module calls?

I’m guessing that ApplicationController can’t see the store\_location  
method in your module.

---

<div class="post-metadata">

**Author:** ![clemrock](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c57346/32.png) [@clemrock](https://www.ruby-forum.com/u/clemrock)\
**Post date:** [November 5, 2008, 3:28pm UTC](https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558/3 "2008-11-05T15:28:14Z")

</div>

torm3nt wrote:

> hmmm
> 
> I’m just guessing here, but have you tried creating a method in your  
> ApplicationController called store\_location, which then makes the  
> appropriate module calls?
> 
> I’m guessing that ApplicationController can’t see the store\_location  
> method in your module.

Thanks for getting back to me. The store location method is clearly  
getting called each time. I can verify this by putting in  
logger.debugs in that method and they are showing it’s getting called  
each time.

---

<div class="post-metadata">

**Author:** ![clemrock](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c57346/32.png) [@clemrock](https://www.ruby-forum.com/u/clemrock)\
**Post date:** [November 5, 2008, 3:34pm UTC](https://www.ruby-forum.com/t/problems-w-before-filter-getting-ignored/152558/4 "2008-11-05T15:34:47Z")

</div>

On 5 Nov 2008, at 04:41, Clem R. wrote:

> def store\_location  
> end  
> end

store\_location is getting called because you’re calling it from the  
login method 🙂 You probably meant to do redirect\_to session[‘return-  
to’] (possibly checking whether session[‘return-to’] is nil and  
redirecting the user to some where appropriate if that is the case
