1. В сессиях можете все что угодно хранить, они не видны пользователям, но все же лучше хеш хранить.
2. Можете проверять есть ли сессия авторизации, если есть, то можете отбросить проверку. Но все же логику лучше сделать таким, чтоб на каждой странице у базы данных запрашивались основные данные пользователя, таким образом у вас будут и данные пользователя и заодно проверка на то, вошел пользователь или нет. Самое главное - все зависит от ситуации, от проекта. К примеру, что если вы удалите данные о пользователе из базы данных, а пользователь был раннее авторизован и в сессиях есть информация , что он авторизован. что тогда? В базе нет - в сессиях есть, до сброса сессий или закрытия браузера пользователь сможет нарушить логику в базе(добавить данные от "удаленного" пользователя и т.д. ). Надеюсь поняли ..
3. А вы искать пробовали? Ни разу не пользовался и не встречал , но на 99% уверен, что таких скриптов туча