Я пишу веб-приложение, используя jhipster. И он использует весну. Я пытался ограничить количество раз, когда один и тот же пользователь может войти в мое приложение, и заставил его работать с файлом с именем ServerConfiguration.java
следующим образом:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.and()
.formLogin()
.loginProcessingUrl("/api/authentication")
.successHandler(ajaxAuthenticationSuccessHandler)
.failureHandler(ajaxAuthenticationFailureHandler)
.usernameParameter("j_username")
.passwordParameter("j_password")
.permitAll()
.
.
.
.
.and()
.sessionManagement()
.maximumSessions(Integer.parseInt(env.getProperty("spring.maxuser.sessions")))
.maxSessionsPreventsLogin(true);
}
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
Это заставляет конкретного пользователя входить в мое приложение столько раз.
Теперь вопрос, который у меня есть, заключается в том, как сделать мое приложение открытым/доступным только для x
числа different
пользователей. Например, я хочу, чтобы к моему приложению обращались только 200 пользователей. И когда приходит пользователь 201 и хочет войти, он не может.
Я видел в этом другом сообщении максимальный весенний лимит сеансы; ограничить максимальное количество пользователей ответ, но я не знаю, где именно разместить этот код.
public class MySessionAuthenticationStrategy extends ConcurrentSessionControlStrategy {
int MAX_USERS = 1000; // Whatever
SessionRegistry sr;
public MySessionAuthenticationStrategy(SessionRegistry sr) {
super(sr);
this.sr = sr;
}
@Override
public void onAuthentication(Authentication authentication, HttpServletRequest request, HttpServletResponse response) {
if (sr.getAllPrincipals().size() > MAX_USERS) {
throw new SessionAuthenticationException("Maximum number of users exceeded");
}
super.onAuthentication(authentication, request, response);
}
}
Где я должен создать этот новый класс MySessionAuthenticationStrategy
И как мне перейти от моего класса httpConfigure к этому новому классу MySessionAuthenticationStrategy
Большое Вам спасибо.