Scalatra аутентификация
Я читаю учебник по аутентификации скалатры.
Написал свою собственную стратегию аутентификации на основе БД, добавлена черта AuthenticationSupport basicAuth()
контроллеру и теперь авторизация работает. Но я до сих пор не могу понять, как я могу поставить и получить идентификатор пользователя из сессии и как я должен использовать методы toSession
а также fromSession
за это:
protected def fromSession = { case id: String => AuthUser(id) }
protected def toSession = { case usr: AuthUser => usr.id }
1 ответ
Я написал довольно подробное изложение о Scentry в своем блоге ( обязательная ссылка). Чтобы ответить на ваш конкретный вопрос, не беспокойтесь о сеансе, который обрабатывает для вас Scentry, по крайней мере, в случае по умолчанию. Вы можете, конечно, переопределить это, если вы так склонны.
Думайте о fromSession/toSession как о связи между тем, что скалатра делает для вас, чтобы добавить пользователя в сеанс, и тем, как вы получаете пользователя. fromSession вручает вам удостоверение личности и говорит: "верните мне запись пользователя". Вы можете делать все, что вам нужно, обращаться с базой данных, обращаться к веб-сервису, что угодно. toSession - это наоборот, в основном он говорит: "У меня есть пользовательский объект, который вы мне передали из сеанса, как мне вернуть идентификатор?". То же самое, какую бы работу вы ни делали, чтобы преобразовать пользователя в ID.
Более конкретно, вы можете думать о них как о:
fromSession: String => A
toSession: A => String
Где String - ваш идентификатор, а A - ваш пользовательский объект. Как только вы подключите их, user
, isAuthenticated
и т. д. просто работают (тм) внутри ваших сервлетов.
Надеюсь, это поможет!