Tworzenie FormAuthenticator
i ustawić to na swojej SecurityHandler
dla ServletContextHandler
. Ten kod tworzy banalny serwer z 2 serwletami. Pierwszy serwlet odpowiada komunikatem hello do uwierzytelnionej nazwy użytkownika. Drugi serwlet implementuje banalny formularz logowania.
powinny mieć możliwość, aby wkleić kod do main[]
i uruchomić (trzeba będzie następujące słoików w ścieżce klas; jetty-server
, jetty-servlet
i jetty-security
). Aby przetestować, wskaż przeglądarkę pod numerem http://localhost:8080
, przed wyświetleniem odpowiedzi pod numerem hello username
powinien zostać wyświetlony monit o podanie danych logowania (nazwa użytkownika/hasło).
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();
Nie udało się sprawić, aby działało ... – oshai
Dzięki! To mi pomogło i udało mi się sprawić, by działało. – mwhidden
Jest to pomocne, ale zastanawiam się, w jaki sposób to zrobiłeś. Dokumentacja Jetty ... nie jest niegrzeczna, skąpa. Na przykład "ConstraintMapping" jest całkowicie nieudokumentowane, a Google nie dostarcza żadnych informacji na jego temat. Czy musisz przeczytać wewnętrzny kod Jetty, aby się go nauczyć? – Timmmm