एक FormAuthenticator
बनाएँ और ServletContextHandler
के लिए अपने SecurityHandler
पर इस निर्धारित किया है। यह कोड 2 सर्वलेट्स के साथ एक छोटा सर्वर बनाता है। पहला सर्वलेट प्रमाणीकृत उपयोगकर्ता नाम के लिए हैलो मैसेज के साथ प्रतिक्रिया करता है। दूसरा सर्वलेट एक मामूली लॉगिन फॉर्म लागू करता है।
आप एक main[]
में पेस्ट करते और चलाने के लिए सक्षम होना चाहिए (यदि आप अपने classpath में निम्नलिखित जार की आवश्यकता होगी; jetty-server
, jetty-servlet
और jetty-security
)। परीक्षण करने के लिए, http://localhost:8080
पर ब्राउज़र को इंगित करें, आपको hello username
की प्रतिक्रिया देखने से पहले प्रमाण-पत्र (उपयोगकर्ता नाम/पासवर्ड) के लिए संकेत दिया जाना चाहिए।
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY);
context.addServlet(new ServletHolder(new DefaultServlet() {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("hello " + request.getUserPrincipal().getName());
}
}), "/*");
context.addServlet(new ServletHolder(new DefaultServlet() {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("<html><form method='POST' action='/j_security_check'>"
+ "<input type='text' name='j_username'/>"
+ "<input type='password' name='j_password'/>"
+ "<input type='submit' value='Login'/></form></html>");
}
}), "/login");
Constraint constraint = new Constraint();
constraint.setName(Constraint.__FORM_AUTH);
constraint.setRoles(new String[]{"user","admin","moderator"});
constraint.setAuthenticate(true);
ConstraintMapping constraintMapping = new ConstraintMapping();
constraintMapping.setConstraint(constraint);
constraintMapping.setPathSpec("/*");
ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler();
securityHandler.addConstraintMapping(constraintMapping);
HashLoginService loginService = new HashLoginService();
loginService.putUser("username", new Password("password"), new String[] {"user"});
securityHandler.setLoginService(loginService);
FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false);
securityHandler.setAuthenticator(authenticator);
context.setSecurityHandler(securityHandler);
server.start();
server.join();
इसे काम करने के लिए प्रबंधित नहीं किया गया ... – oshai
धन्यवाद! यह मेरे लिए सहायक था, और मैं इसे काम करने में सक्षम था। – mwhidden
यह सहायक है, लेकिन मैं सोच रहा हूं कि आप इसे कैसे करना जानते थे। जेटी दस्तावेज ... कठोर, अस्पष्ट होने के बिना है। उदाहरण के लिए 'ConstraintMapping' पूरी तरह से अनियंत्रित है और Google इसके बारे में कोई जानकारी प्रदान नहीं करता है। क्या आपको इसे जानने के लिए आंतरिक जेटी कोड पढ़ना है? – Timmmm