Jetty: программная аутентификация не работает после перезагрузки
Я новичок в Jetty и работаю над тестовым приложением для выполнения базовой аутентификации. В проекте нет файла web.xml. Все обрабатывается кодом.
Я последовал этому примеру: https://github.com/eclipse/jetty.project/blob/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded/SecuredHelloHandler.java
Вот тестовый код
Server server = new Server(8080);
LoginService loginService = new HashLoginService("MyRealm", path);
loginService.setRefreshInterval(5);
server.addBean(loginService);
ConstraintSecurityHandler security = new ConstraintSecurityHandler();
server.setHandler(security);
Constraint constraint = new Constraint();
constraint.setName("auth");
constraint.setAuthenticate(true);
constraint.setRoles(new String[] { "user", "admin" });
ConstraintMapping mapping = new ConstraintMapping();
mapping.setPathSpec("/*");
mapping.setConstraint(constraint);
security.setConstraintMappings(Collections.singletonList(mapping));
security.setAuthenticator(new BasicAuthenticator());
security.setLoginService(loginService);
HelloWorld hw = new HelloWorld();
security.setHandler(hw);
server.start();
Вот мой тест realm.properties
guest:CRYPT:guVeRgi5kAY4k,user,admin
Код запускается тестовой кнопкой в тестовом проекте PDE. Когда сервер запускался в первый раз, он запросил окно для имени пользователя / пароля. Я набрал "гость" и "гость", и это сработало. Но после этого, когда я перезапустил сервер, он никогда больше не спрашивал имя пользователя / пароль. Страница была загружена без аутентификации. Если я изменил пароль в файле свойств области, приглашение снова появится, но только один раз. Что я упустил? Спасибо
1 ответ
Стандартное поведение HTTP Cookie и Servlet Session - вот что происходит.
Перезапуск сервера не приводит к тому, что клиентские файлы cookie больше не работают. Вы захотите настроить поведение файлов cookie и сеанса в соответствии с вашими потребностями (поиск по SessionCookieConfig
и тому подобное).