I think I've found a good way to handle this. It really is pretty
easy.
I subclassed PlaceController and override it goTo() method. It looks
like this:
public void goTo( Place newPlace )
{
if( isLoggedIn )
super.goTo( newPlace );
else
super.goTo( new LoginPlace() );
}
It seems to work well. Handles pages that are bookmarked and the back
button.