Какой-то размытый вопрос, я для одного сайта (почти личного 20+ пользователей), использовал такую схему, в базе храним логин, md5 пароля и sha1 пароля, два токена и пин. в сессии храним первый токен и логин, в куках второй токен и логин, если первый токен есть, пускаем на сайт логин берем из сессии, если нет проверяем есть ли второй токен, если есть просим пин, по верному пину создаем первый токен и записываем в сессию, если и второго токена нет, то просим пароль. md5 и sha1 это простое успокоение паранойи, коллизия не возможна, алгоритмы не требуют больших вложений сил и времени.