2013-05-31 34 views
0

我想檢查我的Global.class onRequest覆蓋中的cookie,但我收到一個錯誤「沒有可用的HTTP上下文」。我知道這可能會涉及某種行動組合,但我對Play的文檔和缺乏有力的示例坦率地感到沮喪。這是我想要完成的。如何在每次請求開始時檢查cookie?

  1. 檢查在每次請求
  2. 如果cookie設置的開始的cookie,驗證值,如果它是有效的設置會話變量。如果cookie未設置,請繼續。
  3. 繼續請求。

一個配方的輪廓,將允許這與一些基本的代碼示例將不勝感激。

回答

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); 
    } 
} 
+0

感謝您提供簡單而直觀的示例。仍然無法讓它在Global中使用我的onRequest重寫,但註釋我的所有控制器都能正常工作。 –

相關問題