如何在每个请求开始时检查cookie?

时间:2013-05-31 19:03:31

标签: playframework-2.0

我想检查我的Global.class onRequest覆盖中的cookie,但是我收到一条错误“此处没有可用的HTTP上下文”。我知道这可能涉及某种行动构成,但我很坦率地对Play的文档和缺乏健全的例子感到沮丧。这就是我想要完成的事情。

  1. 在每个请求开始时检查cookie
  2. 如果设置了cookie,请验证该值,如果有效,则设置会话变量。如果未设置cookie,请继续。
  3. 继续请求。
  4. 我们非常感谢能够通过一些基本代码示例进行配方的大纲。

1 个答案:

答案 0 :(得分:0)

我就是这样做的:

@With({EnrichWithUser.class})
public class CouponController extends Controller {
    @With({EnrichWithUser.class})
    public static Result test(){
        return Results.ok("TEST");
    }
}

整个控制器或一个特定方法应该用动作注释。在一个操作中,您可以访问会话。上面的代码并不代表您的场景,但您会明白这一点:

public class EnrichWithUser extends Action.Simple {
    public Result call(Http.Context ctx) throws Throwable {

    User user = (User)ctx.args.get("user");

    if(user == null){
        String email = ctx.session().get("email");
        if(email != null){
            user = User.findByEmail(email);
            ctx.args.put("user", user);
        }
    } else {
        //System.out.println("USER OBTAINED FROM SESSION");
    }

    return delegate.call(ctx);
    }
}