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и т. д. просто работают (тм) внутри ваших сервлетов.

Надеюсь, это поможет!

Другие вопросы по тегам