Я занимаюсь разработкой приложения, и все работает нормально. Но когда я попытался нажать его на PaaS (используя Jelastic), модуль аутентификации, который я использую (t2v/play2-auth), похоже, больше не работает. Я действительно не понимаю, почему и хотел бы получить некоторые объяснения. Это мой первый опыт использования PaaS, и я думаю, что я все еще не получаю.Войти перенаправить на страницу входа с play2 auth
Для получения дополнительной информации: при попытке входа в систему логин, похоже, работает, и я перенаправлен в/home, но по какой-то причине меня автоматически перенаправляют на страницу входа. Я подозреваю, что пользователь не аутентифицирован. Почему это?
POST http://app/login [HTTP/1.1 303 See Other 3624ms]
GET http://app/home [HTTP/1.1 303 See Other 53ms]
GET http://app/login [HTTP/1.1 200 OK 107ms]
Благодаря любой информации или идеям заблаговременно.
EDIT: Вот моя AuthConfig черта:
type Id = Long
type User = AccessUser
type Authority = Int
val idTag: ClassTag[Id] = classTag[Id]
val sessionTimeoutInSeconds: Int = 3600
def resolveUser(id: Id)(implicit ctx: ExecutionContext): Future[Option[User]] = Future(AccessProvider.find(id))
def goHome: Future[Result] = Future(Redirect(controllers.users.routes.UserSpaceController.home(0)))
def loginSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = {
val uri = request.session.get("access_uri").getOrElse(controllers.users.routes.UserSpaceController.home(0).url.toString)
Future.successful(Redirect(uri).withSession(request.session - "access_uri"))
}
def logoutSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] =
Future.successful(Redirect(controllers.routes.PublicController.index))
def authenticationFailed(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] =
Future.successful(Redirect(controllers.users.routes.SecurityController.login).withSession("access_uri" -> request.uri))
def authorizationFailed(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] =
Future.successful(Forbidden("no permission"))
def authorize(user: User, authority: Authority)(implicit ctx: ExecutionContext): Future[Boolean] = Future.successful {
(user.permission, authority) match {
some cases
}
}
override lazy val cookieSecureOption: Boolean = play.api.Play.isProd(play.api.Play.current)
Звучит как проблема с кешированием. Вы используете ehcache? Вы используете несколько экземпляров? Как выглядит ваш признак «AuthConfig»? –
@ m-z Спасибо за ответ. Нет. Я не использую ehcache (или, по крайней мере, я не настроил ничего особенного для кэширования). Я отредактировал свое оригинальное сообщение с AuthConf. Спасибо за помощь –
Две вещи. Во-первых, если вы не настроили что-либо для кеша, то вы, вероятно, используете реализацию ehcache по умолчанию (это приведет к сбоям в работе в распределенной среде). Другая вещь, которую я заметил, - это то, что у вас есть значение 'cookieSecureOption' для true, но ваши URL-адреса используют только http. Если вы не используете https и 'cookieSecureOption = true', cookie будет отброшен - это, вероятно, ваша проблема. –