Весна - Включение текущего пользователя в каждый вызов уровня обслуживания / DAO - PullRequest
0 голосов
/ 03 ноября 2019

Я выполняю бизнес-проверку: есть ли у текущего пользователя разрешение на определенный набор данных в Базе данных. Для этого мне нужно имя пользователя, вошедшего в систему.

Приведенный ниже пример отлично работает, в котором после успешной аутентификации в контроллере / перехватчике параметр userName передается во всех вызовах от контроллера к сервисному уровню.

@Service 
public class MyServiceImpl implements MyService {

    @Autowired
    private MyDAO myDAO;

    public String getData(String userName) {
          return myDAO.getData(userName);
    }
}

От контроллераИнформация о пользователе передается в Службу, а затем в DAO, чего я хочу избежать.

У меня есть свой собственный механизм для проверки подлинности и авторизации. Мне нужно очень простое решение, чтобы включить этот дополнительный параметр в некоторый контекст для каждого вызова уровней Service / DAO.

Примечание. Мне нужно простое решение, и я не хочу использовать такие инфраструктуры, как spring-security и т. Д.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

В надежде, что вы используете контекст потока, вы можете легко установить параметр в контексте и использовать его в любом месте приложения. (очень похоже на переменные сеанса). Вы можете обратиться к этой ссылке за помощью. Если вы уже используете весенние сессии, то вы устанавливаете переменные в сессии и используете их.

0 голосов
/ 03 ноября 2019

Может быть, вы можете рассмотреть возможность использования ThreadLocal. Установите имя пользователя ThreadLocal после аутентификации и получите значение в классе Service.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...