Как расширить или изменить значение тайм-аута сеанса, т.е. session.maxAge в Play Framework (Java) - PullRequest
0 голосов
/ 04 мая 2018

Я новичок в Play Framework и работаю над управлением сессиями. Мое требование: мне нужно изменить значение TimeOut сеанса на определенное значение, когда пользователь все еще использует приложение (веб-страница).

Состояние: Если пользователь вошел в систему, и время ожидания составляет 30 минут. Пользователь работает над тем же приложением, и срок сеанса должен истечь через 30 минут интервала времени. Поскольку время ожидания сеанса составляет 30 минут, оно истекает и отправляет пользователя на страницу входа. Мне нужен способ обработки сеанса, чтобы когда пользователь обращался к приложению, а сеанс был близок к концу. Я хочу изменить значение в два раза. Так что пользователь может использовать тот же сеанс.

Это значение по умолчанию, которое я установил

###session timeout is 30 minutes (1800000 Milliseconds) play.http.session.maxAge = 1800000

Я использую приведенный ниже способ проверки правильности сеанса в Play Framework с использованием Java. Пожалуйста, найдите образец кода.

public class SessionValidatorAction extends Action.Simple{ 

public CompletionStage<Result> call(Context ctx) 

    {

      ctx.session().get("user");

    }

}

Ниже приведена ссылка на одно и то же управление сессиями в Play:

https://www.playframework.com/documentation/2.6.x/JavaActionsComposition#Action-composition

Примечание: Я не нашел никаких методов в объекте сеанса, как мы получаем в Java (J2EE) Session.setMaxInactiveInterval (15 * 60); Пожалуйста, ведите меня. Заранее спасибо ..

1 Ответ

0 голосов
/ 08 января 2019

Наследуйте класс фильтра и реализуйте метод apply. Таким образом, если вы вызовете «withsession in» result: Result »в качестве параметра предыдущего сеанса, будет создан новый сеанс. Конечно, время истечения снова будет продлено.

извините, я плохо разбираюсь в английском. Надеюсь, это поможет.

вот мой код от Scala


    @Singleton
    class SessionDelayFilter @Inject()(implicit override val mat: Materializer,
                                       exec: ExecutionContext) extends Filter {
      override def apply(nextFilter: RequestHeader => Future[Result])
                        (requestHeader: RequestHeader): Future[Result] = {
        nextFilter(requestHeader).map { result =>
          result.withSession(result.session(requestHeader))
        }
      }
    }

...