Using the @auth.requires_login() on every function is the only way I know of. However, you may be able to put something like this at the top of each controller:
if auth.user is None:
redirect(URL('default', 'login'))
However, it might cause a problem if you put that in your default
controller. In this case, you'd still want to use the decorator for each
action in the default controller, but all of your other controllers should
work with this at the top.

