如何从Session中保存和读取数据?

How to save and read data from Session?

我正在使用 play framework 2.8.x 并尝试将数据保存到会话中,并在下一个请求中读取此数据,但我的数据未保存在会话对象中。我的控制器 class 如下所示:

public class UserController extends Controller {
    public Result verifyToken(Http.Request request) {
        final Http.Session session = request.session();
        session.adding("key1", "my_value");
        return ok(userInfo).withCookies(tokenCookie).withSession(session);
    }
}

然后我重构我的代码如下:

public class UserController extends Controller {
    public Result verifyToken(Http.Request request) {
        return ok(userInfo).addingToSession(request, "sessionData", "test");
    }
}

但我得到了相同的结果。不工作! 然后我尝试从 Filter 中的会话中读取我的数据。我的过滤器如下所示:

public class PageAccessFilter extends Filter {
    @Inject
    public PageAccessFilter(Materializer mat) {
        super(mat);
    }

    @Override
    public CompletionStage<Result> apply(Function<Http.RequestHeader, CompletionStage<Result>> next, Http.RequestHeader rh) {
        final Http.Session userSession = rh.session();
            final String userToken = userSession.get("key1").orElse(null); // in this value was null.
        return next(rh);
    }
}

如何从会话中保存和读取数据?我做错了什么?

在 ok() 响应上使用 addingToSession

public class UserController extends Controller {
    public Result verifyToken(Http.Request request) {
        return ok(userInfo).addingToSession(request, "key1", "my_value");
    }
}