# Controller before\_filter issues

**URL:** <https://www.ruby-forum.com/t/controller-before-filter-issues/52666>\
**Category:** Rails\
**Created:** [November 16, 2005, 5:17pm UTC](https://www.ruby-forum.com/t/controller-before-filter-issues/52666 "2005-11-16T17:17:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeroen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bbe5ce/32.png) [@jeroen](https://www.ruby-forum.com/u/jeroen)\
**Post date:** [November 16, 2005, 5:17pm UTC](https://www.ruby-forum.com/t/controller-before-filter-issues/52666/1 "2005-11-16T17:17:43Z")

</div>

Hi,

Some controller filters:

before\_filter :require\_logged\_in, :only =\> [:create, :new,  
:confirm]  
before\_filter :init\_players, :only =\> [:create, :new, :confirm]

The first one, you guessed it, redirects a user if he’s not logged in.

Now when I hit this page and I’m not logged in, the 2nd filter gets  
executed and throws an error, because it depends on the user being  
logged in. I don’t really want to do an extra check in the init\_players  
method, it’s not very DRY…

Any ideas?

Jeroen

---

<div class="post-metadata">

**Author:** ![jeroen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bbe5ce/32.png) [@jeroen](https://www.ruby-forum.com/u/jeroen)\
**Post date:** [November 16, 2005, 7:48pm UTC](https://www.ruby-forum.com/t/controller-before-filter-issues/52666/2 "2005-11-16T19:48:41Z")

</div>

You probably need to add a return at the end of your redirect:

redirect(…) and return

-Larry

---

<div class="post-metadata">

**Author:** ![jeroen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bbe5ce/32.png) [@jeroen](https://www.ruby-forum.com/u/jeroen)\
**Post date:** [November 16, 2005, 8:24pm UTC](https://www.ruby-forum.com/t/controller-before-filter-issues/52666/3 "2005-11-16T20:24:55Z")

</div>

Hi !

2005/11/16, Jeroen H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Now when I hit this page and I’m not logged in, the 2nd filter gets  
> executed and throws an error, because it depends on the user being  
> logged in. I don’t really want to do an extra check in the init\_players  
> method, it’s not very DRY…

When you redirect, do you prevent further filter chain execution by  
returning false ?

You would do it this way:  
def require\_logged\_in

# check authentication

# user not authenticated, we need to redirect

redirect\_to :login\_url  
return false # prevents further filter chain execution (aborts  
request)  
end

Hope that helps !  
FranÃ§ois

---

<div class="post-metadata">

**Author:** ![jeroen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bbe5ce/32.png) [@jeroen](https://www.ruby-forum.com/u/jeroen)\
**Post date:** [November 17, 2005, 10:47am UTC](https://www.ruby-forum.com/t/controller-before-filter-issues/52666/4 "2005-11-17T10:47:27Z")

</div>

Francois B. wrote:

> When you redirect, do you prevent further filter chain execution by  
> Hope that helps !  
> It helps!

Jeroen
