Одно сеанс вход с использованием Quarkus: реализация одного сеанса в время с Quarkus-Hibernate-ReactiveJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Одно сеанс вход с использованием Quarkus: реализация одного сеанса в время с Quarkus-Hibernate-Reactive

Сообщение Anonymous »

Я внедряю одну функцию входа в систему с использованием Quarkus. Процесс включает API A /Login, где после успешного входа в ответ генерируется и возвращается токен JWT. Токен также сохраняется в базе данных. Тем не менее, я сталкиваюсь с проблемами при использовании Quarkus-hibernate-reactive , и я сталкиваюсь с ошибкой:
»сеанс/EntityManager закрыт»
Ниже приведен код, который я использую для проверки токена для входа в единый сеанс. Не могли бы вы предоставить руководство о том, как правильно внедрить вход в отдельный сеанс в реактивной среде Quarkus, а также любые ссылки, которые могут помочь? < /P>
package asc.qrs.common;

import asc.qrs.repository.UserSessionRepository;
import io.quarkus.logging.Log;
import io.smallrye.mutiny.Uni;
import jakarta.annotation.Priority;
import jakarta.inject.Inject;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerRequestFilter;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.ext.Provider;

@Provider
@Priority(1)
public class SingleSessionFilter implements ContainerRequestFilter {

@Inject
UserSessionRepository userSessionRepository;

@Override
public void filter(ContainerRequestContext requestContext) {
String path = requestContext.getUriInfo().getPath();

if (path.equals(AppConstant.USER_LOGIN)) {
return; // Skip token validation for the login endpoint
}

Log.info("SingleSessionFilter started");

String header = requestContext.getHeaderString("Authorization");

if (header != null && header.startsWith("Bearer ")) {
String token = header.substring(7);

Log.infof("Extracted token: %s", token);

// Use reactive validation of the token
checkTokenValidity(token)
.subscribe().with(
isValid -> {
if (!isValid) {
Log.infof("Invalid token detected: %s", token);
abortRequest(requestContext, Response.Status.UNAUTHORIZED, "Invalid token");
} else {
Log.infof("Token is valid: %s", token);
}
},
failure -> {
Log.errorf("Error during token validation: %s", failure.getMessage());
abortRequest(requestContext, Response.Status.INTERNAL_SERVER_ERROR, "Internal error occurred");
}
);
} else {
Log.info("Authorization header missing or invalid");
abortRequest(requestContext, Response.Status.UNAUTHORIZED, "Authorization header is missing or invalid");
}
}

private Uni checkTokenValidity(String token) {
return userSessionRepository.countByToken(token)
.onItem().transform(count -> count > 0);
}

private void abortRequest(ContainerRequestContext requestContext, Response.Status status, String message) {
requestContext.abortWith(
Response.status(status).entity(message).build()
);
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -time-with
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Одно сеанс вход с использованием Quarkus: реализация одного сеанса в время с Quarkus-Hibernate-Reactive
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Quarkus Panache Reactive, почему транзакция не может быть отправлена/подписана из потока исполнителя
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Вход / вход с использованием сеанса в PHP
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Вход / вход с использованием сеанса в PHP
    Anonymous » » в форуме Php
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Проверка/внедрение SQL в Hibernate Reactive
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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