आप आवेदन दायरे में एक 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 तस्वीर में फिट बैठता है, लेकिन जावा सर्वलेट एपीआई में बात करते हुए, आप इसके लिए 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
@ बाल्लूसी प्रश्न – fabien7474