0

我想在我的 Global.class onRequest 覆盖中检查一个 cookie,但我收到一个错误“这里没有可用的 HTTP 上下文”。我知道这可能会涉及某种动作组合,但坦率地说,我对 Play 的文档和缺乏可靠的示例感到沮丧。这就是我想要完成的事情。

  1. 在每个请求开始时检查 cookie
  2. 如果设置了 cookie,则验证该值,如果它有效,则设置一个会话变量。如果未设置 cookie,请继续。
  3. 继续请求。

将不胜感激提供一些基本代码示例的配方大纲。

4

1 回答 1

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);
    }
}
于 2013-05-31T21:13:09.900 回答