如何从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");
}
}
我正在使用 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");
}
}