Closed sedovalx closed 9 years ago
Вроде бы готово. Для сервера был выбран Play Silhouette Для клиента - ember-simple-auth Из-за того, что первый передает и принимает токены в заголовке сообщений, а второй - то в заголовке, то в теле, пришлось немного поработать напильником и скотчем. Это совсем нехорошо, но другого выхода не нашел. Возможно что-то допилят создатели библиотек либо там, либо там
Осталось описать теорию.
В результате реализации были добавлены зависимости как от серверных, так и от клиентских библиотек. Поэтому на сервере нужно выполнить перекомпилирование, чтобы подтянулись нужные зависимости. На клиенте же нужно выполнить установку отсутствующих bower и npm пакетов.
PlayModule
.Silhouette
. В нем можно объявлять методы с возвращаемым типом SecuredAction
. У таких методов есть доступ к текущему аутентифицированному пользователю - через request.identity. Так же для таких методов можно указывать, какой роли пользователя разрешено их выполнять.app/routes/base/protected.js
.this.get("session").get("currentUser")
.Закрываю, все вроде бы работает.
Сейчас аутентификация происходит на сервере. Страница с логином/паролем - это серверная страница, по факту - отдельное приложение. Клиент же не имеет представления о сессии, текущем пользователе и пр. Аутентификационная информация сохранятется в cookie. На клиенте нам все равно нужен доступ к текущему пользователю, поэтому нужно сделать правильно.
Предлагается на клиенте использовать библиотеку ember-simple-auth с кастомным аутентификатором.
Как реализовать серверную часть кастомной аутентификации мне пока неясно.
Серверная token-аутентификация: https://github.com/jamesward/play-rest-security Видео по клиентской аутентификации: http://www.embercasts.com/episodes/client-side-authentication-part-1 Статья по клиентской token-аутентификации: http://webcloud.info/blog/2014/04/07/emberjs-authentication-the-right-way-javascript-version/
Теория о JWT: https://stormpath.com/blog/token-auth-spa/
Серверная JWT-аутентификация на базе Silhouette: https://github.com/merle-/silhouette-rest-seed
Вероятный выбор: Клиент - https://github.com/jpadilla/ember-cli-simple-auth-token Сервер - https://github.com/merle-/silhouette-rest-seed