我希望在將 用戶發送到登錄之前檢查會話 - 每個URL請求都會檢查這是否來自有效會話 - 如果不是,請將它們發送到登錄頁面 其他正常處理。如果用戶已經有活動會話,我們 將不會向他們顯示登錄頁面,但將他們帶到預定義的主頁面 頁面。在播放1.2.5中使用@before註釋?
我在谷歌相關搜索,並知道它會通過在控制器中使用@Before
註釋完成,但不知道@Before
工作以及如何使用?我正在使用遊戲1.2.5。
我希望在將 用戶發送到登錄之前檢查會話 - 每個URL請求都會檢查這是否來自有效會話 - 如果不是,請將它們發送到登錄頁面 其他正常處理。如果用戶已經有活動會話,我們 將不會向他們顯示登錄頁面,但將他們帶到預定義的主頁面 頁面。在播放1.2.5中使用@before註釋?
我在谷歌相關搜索,並知道它會通過在控制器中使用@Before
註釋完成,但不知道@Before
工作以及如何使用?我正在使用遊戲1.2.5。
Play安全模塊完全符合開箱即用的要求。它被大多數應用程序使用,並與不同的插件集成在一起。檢查文檔here。
如果你仍然想自己實現它,你可以使用安全代碼作爲例子。
否則@Before可用於您的任何控制器靜態方法並可訪問所有作用域對象,包括會話。
可以使用@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中的論壇應用示例。