У меня есть два приложения, в первом из которых написано «Вход пользователя по имени пользователя и паролю».Я вошел в систему с именем пользователя с помощью объекта весенней аутентификации в приложении A. Приложение A выполняет вызовы rest или soap api в приложение B. Я передаю имя пользователя из приложения A в B, добавляя имя пользователя в заголовок вызовов rest или soap.Приложение B делает вызовы базы данных, делает CRUD на базе данных SQL.Я хочу сохранить это имя пользователя в обновленном, измененном полями.Я использовал bean для хранения имени пользователя, но когда несколько пользователей используют приложение, оно перезаписывается.Как этого можно достичь?Спасибо
В следующем перехватчике userSync сохранит мое текущее зарегистрированное имя пользователя, usernameGetter будет использоваться для получения текущего зарегистрированного имени пользователя из запроса http.userSync и usernameGetter являются одноэлементными компонентами.
public class RequestInterceptor extends HandlerInterceptorAdapter {
private DomainUserSynchronizer userSynchronizer;
@Autowired
UsernameGetter usernameGetter;
@Autowired
private UserSynchronizer userSync;
private static final Logger LOGGER = LoggerFactory.getLogger(RequestInterceptor.class);
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
LOGGER.info("Inside after completion");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
// do nothing
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
// Enumeration e = (Enumeration) (session.getAttributeNames());
//session.getAttribute("an");
//session.getAttribute("MYSPEAK_SESSION_HASH");
String username = usernameGetter.getUsernameFromSession(request);
if(username!=null && !username.isEmpty()){
LOGGER.info("Found username in request: "+ username);
LOGGER.info("Setting username in userSynchronizer: "+ username);
userSync.getCurrentUser().setName(username);
}
else{
LOGGER.info(" Username not found in request: ");
LOGGER.info("Setting default username in userSynchronizer: "+ userSync.getCurrentUser().getName());
}
return true;
}
public DomainUserSynchronizer getUserSynchronizer() {
return userSynchronizer;
}
public void setUserSynchronizer(DomainUserSynchronizer userSynchronizer) {
this.userSynchronizer = userSynchronizer;
}
}