Authentication is a delicate area and it is one of the aspects where developers keep reinventing the wheel. I'd suggest you use a ready to use library or plugin to do so. In particular I would recommend using Authlogic plugin.
It works as a plugin so no generated code nor intrusive stuff goes into your app.
In answer to your question, the access limit verification should go in the controller, by using a before_filter and checking the action they are going to execute is allowed. (The filter method is passed the controller instance and is hence granted access to all aspects of the controller and can manipulate them as it sees fit)
However, using the plugin I mentioned above this would be as easy as
before_filter :require_user, :except => [:list]
this would require login for all actions in the controller except for the list action