Cookie在其他类中是空的

时间:2013-06-17 09:33:26

标签: java rest jax-rs

在UserRest类中设置用户cookie的方法

@Component
@Path("/user")
public class UserRest{
    .............

    @POST
    @Path("/login")
    @Produces(MediaType.APPLICATION_JSON)
    public Response login(@FormParam("username") String username,
    @FormParam("password") String password){
        return Response.ok(messageDto)
           cookie(new NewCookie("tokenId", "12345", "/medinetra/rest_service/", "192.168.1.2", "", 1800, true))
           .build();
   }

当我尝试在UserRest类中获取cookie时成功

@GET
@Path("getcookie")
@Produces(MediaType.APPLICATION_JSON)
public Response getCookie(@CookieParam("token") String token){
    System.out.println(token); //=> write 123456
    return Response.status(200).entity("ok").build();
}

但是当我将getCookie方法放在CustomerRest中时,它将返回null。

当我尝试其他方式设置cookie时,它也无法正常工作。

Response.ok(messageDto)
    .header("Set-Cookie", "token="+token+";Domain=192.168.1.2;Path=appname/rest_service;")
   .build();

我如何处理这个,如何从其他类中获取cookie。

1 个答案:

答案 0 :(得分:0)

在第一个示例中,您没有指定路径。如果您没有指定路径,则使用HTTP cookie,它默认为返回cookie的资源的路径。您应该使用其中一个NewCookie构造函数来获取更多参数并提供路径。

在第二个示例中,您将命名您的Cookie tokenId而不是token,如第一个示例所示。如果您的CustomerRest代码看起来像UserRest代码,那么您要求的是名为token而不是tokenId的Cookie。