[英]use @before annotation in play 1.2.5?
我希望在將用戶發送到登錄名之前檢查會話-從而每個URL請求都將檢查是否來自有效會話-如果不是,請將其發送到登錄頁面,否則按常規進行處理。 如果用戶已經有一個活動會話,我們將不向他們顯示登錄頁面,而是將他們帶到預定義的主頁。
我在Google上搜索了與此相關的信息,並知道它將通過在控制器中使用@Before
注解來完成,但不了解@Before
工作方式以及如何使用? 我正在使用播放1.2.5。
您可以使用@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中查看論壇應用示例。
Play安全模塊開箱即用。 大多數應用程序都使用它,並且還與其他插件集成。 在此處查看文檔。
如果仍要自己實現,則可以使用安全代碼作為示例。
否則, @ Before可以在您的任何控制器靜態方法上使用,並且可以訪問所有作用域對象,包括會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.