Я бы сделал проще))))
1. Логин — храним в кукисах или вводим вручную.
2. Логин ушел на сервер — сервер сгенерил ID-сессии и ждет…
3. Со смарта отправляется login, timestamp и hash=md5(md5(pass)+timestamp)
(md5(pass) хранится на сервере и на смарте)
4. Сервер проверяет, что hash и hash из параметров по формуле равны и если TIMEOUT не вышел (10 секунд, к примеру, на обновление ожидания через AJAX в браузере), то возвращает список активных сессий для этого пользователя.
Далее — можно делать все что угодно (если сессий больше 1, к примеру, то единомоментно зашли сразу с нескольких компьютеров с одинаковым паролем!!!):
По сессиям на смарте можно: посмотреть IP, время инициализации, браузер, разрешение экрана, ip2town, и т.д.
и войти в один клик на смарте с нужными правами, настройками, сразу на нужную вкладку и т.д.
Можно защитить вход в сессию PIN-кодом или убить все сессии на сервере принудительно…
Тут уж на что фантазии хватит)