2012-11-05 39 views
0

我希望在將 用戶發送到登錄之前檢查會話 - 每個URL請求都會檢查這是否來自有效會話 - 如果不是,請將它們發送到登錄頁面 其他正常處理。如果用戶已經有活動會話,我們 將不會向他們顯示登錄頁面,但將他們帶到預定義的主頁面 頁面。在播放1.2.5中使用@before註釋?

我在谷歌相關搜索,並知道它會通過在控制器中使用@Before註釋完成,但不知道@Before工作以及如何使用?我正在使用遊戲1.2.5。

回答

2

Play安全模塊完全符合開箱即用的要求。它被大多數應用程序使用,並與不同的插件集成在一起。檢查文檔here

如果你仍然想自己實現它,你可以使用安全代碼作爲例子。

否則@Before可用於您的任何控制器靜態方法並可訪問所有作用域對象,包括會話。

4

可以使用@Before這樣:

@Before 
static void addUser() { 
    User user = connected(); 
    if(user != null) { 
     renderArgs.put("user", user); 
    } 
} 

static User connected() { 
    if(renderArgs.get("user") != null) { 
     return renderArgs.get("user", User.class); 
    } 
    // Find your user from session 
    String username = session.get("user"); 
    if(username != null) { 
     return User.find("byUsername", username).first(); 
    } 
    return null; 
} 

// ~~render your login if the user is not finded in session 

public static void index() { 
    if(connected() != null) { 
     render(); 
    } 
    login(); 
} 

你可以找到YOUR_PLAY_DIR /樣品和檢驗/預訂此示例代碼。

正如@ emt14所說,您可以更輕鬆地使用Play安全模塊來做到這一點。查看YOUR_PLAY_DIR/samples-and-tests/forum中的論壇應用示例。