你需要收集用戶的所有信息記錄在Set<User>
在應用範圍。只需掛上login
和logout
並相應地添加和刪除User
。基本上是:
public void login(User user) {
// Do your business thing and then
logins.add(user);
}
public void logout(User user) {
// Do your business thing and then
logins.remove(user);
}
如果你存儲在會話中的登錄用戶,那麼你想添加另一個鉤子上會破壞就發出註銷任何已登錄的用戶。我不確定Grails如何適合圖片,但是在Java Servlet API中進行交流時,您希望使用HttpSessionListener#sessionDestroyed()
。
public void sessionDestroyed(HttpSessionEvent event) {
User user = (User) event.getSession().getAttribute("user");
if (user != null) {
Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
logins.remove(user);
}
}
你也可以讓User
模型實現HttpSessionBindingListener
。只要User
實例被放入會話中或從中刪除(這也會在會話銷燬時發生),將自動調用已實現的方法。
public class User implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
logins.add(this);
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
logins.remove(this);
}
// @Override equals() and hashCode() as well!
}
此URL需要登錄,所以它是無用的人誰是不能或不會在該網站上註冊。 – BalusC 2010-07-17 13:53:49
@BalusC問題已更新 – fabien7474 2010-07-17 16:12:42