Ваадинессия автоматически запускает сеанс после входа в URL в браузере?JAVA

Программисты JAVA общаются здесь
Anonymous
Ваадинессия автоматически запускает сеанс после входа в URL в браузере?

Сообщение Anonymous »

контекст: < /strong>
Я пытаюсь запустить сеанс, используя компонент Vaadinsesse. В этом пользовательском интерфейсе я могу проверить сеанс (используя вход в систему проверки внутри кнопки) и кнопку «Выход». Хочу: < /strong>
Я хочу, чтобы сеанс запустился после того, как я введен свои учетные данные и нажимал кнопку входа в систему. И сеанс должен закончиться только в том случае, если я нажимаю кнопку «Выход» или в случае достижения тайм -аута сеанса (истечение сеанса).
TechStack используется:
  • java 11
  • vaadin 23.3.11
  • 10. /> Spring 5.3.30
my code:
loginview.java
public LoginView() {
this.userRepository = SpringContext.getBean(UserRepository.class); // manual injection

TextField username = new TextField("Username");
PasswordField password = new PasswordField("Password");

Button loginButton = new Button("Login", e -> {
logger.info("Inside LoginView.class. Clicked login Button after entering username and password.");
String u = username.getValue();
String p = password.getValue();

logger.info("Username is: {}", u);
logger.info("Password is: {}", p);

if (userRepository.validateUser(u, p)) {
logger.info("Valid credentials");

VaadinSession.getCurrent().setAttribute("user", u);
String sessionId = VaadinSession.getCurrent().getSession().getId();
logger.info("Session Id is: {}", sessionId);

getUI().ifPresent(ui -> ui.navigate("dashboard"));
} else {
logger.info("Invalid credentials");
Notification.show("Invalid credentials");
}
});
add(username, password, loginButton);
}
< /code>
** dashboard.java ** < /p>
public Dashboard(){
logger.info("Entered Dashboard View.");

String user = (String) VaadinSession.getCurrent().getAttribute("user");
if (user == null) {
logger.info("Session missing or expired. Redirecting to login.");
UI.getCurrent().getPage().setLocation("login");
return;
}

VaadinSession session = VaadinSession.getCurrent();
String sessionId = session.getSession().getId();
logger.info("Session ID: {}", sessionId);

Button validateButton = new Button("Validate", e->{
logger.info("Clicked Validate button.");
String currentUserSessionId = VaadinSession.getCurrent().getSession().getId();

if(currentUserSessionId != null){
Notification.show("Session is valid " + currentUserSessionId);
}else{
Notification.show("No session found.");
}
});

Button logoutButton = new Button("Logout", e->{
logger.info("Clicked logout button.");
session.getSession().invalidate();
session.close();
getUI().ifPresent(ui -> ui.getPage().setLocation("login"));

});
add(validateButton, logoutButton);
}

sessionconfiglistener.java
public class SessionConfigListener implements HttpSessionListener {

private static final Logger logger = LoggerFactory.getLogger(SessionConfigListener.class);

@Override
public void sessionCreated(HttpSessionEvent se) {
se.getSession().setMaxInactiveInterval(30); // 30 seconds
logger.info("Session created: " + se.getSession().getId());
}

@Override
public void sessionDestroyed(HttpSessionEvent se) {
logger.info("Session expired: " + se.getSession().getId());
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... l-in-the-b

Вернуться в «JAVA»