登录后在REST中提取JSESSIONID
Extract JSESSIONID in REST after login
我正在开发允许用户创建的系统 workspaces.After 工作区创建用户可以通过提供用户名、密码和工作区登录。
我需要登录后生成的 jsessionid 来创建工作区和 jsessionid 之间的连接。
登录通过 REST。
@POST
@Path("login")
@Produces(ContentType.APPLICATION_JSON_CHARSET_UTF_8)
public JsonObject login(LoginCredentials loginCredentials) throws UnAuthorizedException {
//login logic
}
我还有实现 ContainerResponseFilter、WriterInterceptor 的拦截器。
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext context)throws IOException {
//...
}
如何生成 jsessionid(我在响应中看到 header)?
在您的拦截器中,您可以获取服务请求并提取 Headers 或您放入请求中的任何内容(因此您的 JSESSIONID 也是如此):
HttpServletRequest request = (HttpServletRequest) message
.getExchange().getInMessage()
.get(AbstractHTTPDestination.HTTP_REQUEST);
如果您有一个 http 请求对象,您可以获得关联的会话。获得会话后,您可以获得它的 id
request.getSession(true).getId()
将 true
传递给 getSession
会导致创建一个新会话(如果会话尚不存在)。
假设您将 Jersey 用于 REST 服务,您可以使用例如
@Context HttpServletRequest request
在您的服务方法签名中,以便访问响应 headers。
看一眼
https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2742
和
Under what conditions is a JSESSIONID created?(这个是关于JSessionID的)
我正在开发允许用户创建的系统 workspaces.After 工作区创建用户可以通过提供用户名、密码和工作区登录。 我需要登录后生成的 jsessionid 来创建工作区和 jsessionid 之间的连接。
登录通过 REST。
@POST
@Path("login")
@Produces(ContentType.APPLICATION_JSON_CHARSET_UTF_8)
public JsonObject login(LoginCredentials loginCredentials) throws UnAuthorizedException {
//login logic
}
我还有实现 ContainerResponseFilter、WriterInterceptor 的拦截器。
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext context)throws IOException {
//...
}
如何生成 jsessionid(我在响应中看到 header)?
在您的拦截器中,您可以获取服务请求并提取 Headers 或您放入请求中的任何内容(因此您的 JSESSIONID 也是如此):
HttpServletRequest request = (HttpServletRequest) message
.getExchange().getInMessage()
.get(AbstractHTTPDestination.HTTP_REQUEST);
如果您有一个 http 请求对象,您可以获得关联的会话。获得会话后,您可以获得它的 id
request.getSession(true).getId()
将 true
传递给 getSession
会导致创建一个新会话(如果会话尚不存在)。
假设您将 Jersey 用于 REST 服务,您可以使用例如
@Context HttpServletRequest request
在您的服务方法签名中,以便访问响应 headers。 看一眼 https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2742 和 Under what conditions is a JSESSIONID created?(这个是关于JSessionID的)