जेएसएफ में, ऐसा लगता है कि सत्र से पहले एक सफल लॉगिन बनाया गया है। यानी लॉगिन पेज का अनुरोध करने से नया सत्र बनने का कारण बनता है।जेएसएफ लॉगिन के दौरान सत्र कब बनाया जाता है?
यह प्रत्येक अनुरोध के लिए एक सत्र बनाने के लिए बहुत ही अपमानजनक (और डीडीओएस हमलों के लिए कमजोर) लगता है, प्रत्येक उपयोगकर्ता को सफलतापूर्वक लॉग इन करने के बजाय।
नीचे दिया गया कोड बहुत सामान्य है, लेकिन इस तरह का सरल परिदृश्य दिखाता है जिसका मैं जिक्र कर रहा हूं।
index.xhtml:
<html>
<body>
<h:form id="login">
<h:outputLabel for="username">Username</h:outputLabel>
<p:inputText id="username" name="username" value="#{userController.username}"/>
<h:outputLabel for="password">Password</h:outputLabel>
<p:password id="password" name="password" value="#{userController.password}"/>
<p:commandButton id="loginButton" value="login" action="#{loginController.login}"/>
</h:form>
</body>
</html>
LoginController.java
@ViewScoped
public class LoginController implements Serializable {
String username;
String password;
public void login(){
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request.getSession(false) == null){
System.out.println("No session.");
} else {
System.out.println("Session already exists.");
}
try {
request.login(username, password);
} catch (ServletException e) {
FacesContext.getCurrentInstance.addMessage(null, new FacesMessage("Login failure", e.getMessage()));
}
}
// username and password getters/setters
}
संपादित करें: shambolic कोड उदाहरण तय
कन्फेशंस - नमूना कोड को हमारे उत्पादन कोड से काफी अनुकूलित किया गया था। मैं मूल रूप से getSession (झूठी) का उपयोग कर रहा था। लेकिन उस तरफ, मैंने जो सोचा था उसकी पुष्टि करने के लिए धन्यवाद। आसपास के शिकार (किताबें, ब्लॉग, ओरेकल दस्तावेज़) के बावजूद मुझे स्पष्ट पुष्टि नहीं मिली कि जेएसएफ सत्र को स्वतः संसाधित करता है। – MMeldrum
एक तरफ के रूप में, क्या यह वास्तव में नए लॉगिन अनुरोधों के साथ बाढ़ करके सर्वर को लेना आसान बनाता है (कोई लॉगिन प्रमाण-पत्र उपलब्ध होने के बावजूद)? – MMeldrum
सर्वर हार्डवेयर और विन्यास पर निर्भर करता है। जैसे कनेक्शन/अनुरोध पूलिंग, सत्र टाइमआउट, उपलब्ध स्मृति, नेटवर्क बैंडविड्थ, आदि मापना जानना है। – BalusC