В настоящее время ваш внешний интерфейс (пользовательский интерфейс webapp) напрямую взаимодействует с базой данных, выполняя AuthN / AuthZ самостоятельно. Итак, чтобы отделить пользовательский интерфейс от аутентификации, вы можете ввести бэкэнд (например, Springboot), который, в свою очередь, позаботится о транзакциях с базой данных. Учитывая вариант использования, в котором используется простой пароль пользователя, нет необходимости в безопасности Spring, поскольку простое решение logi c может быть принято в самом вашем коде.
- База данных: вы можете используйте базу данных в памяти springboot JPA , или вы можете придерживаться своей текущей базы данных, просто убедитесь, что у нее есть API-интерфейсы, через которые ваш сервер может взаимодействовать с ней.
- Backend (Springboot): Итак у этого может быть несколько конечных точек REST API, которые могут использоваться пользовательским интерфейсом для запроса о пользователе.
@RestController
public class CustomRestController() {
//Can be a post method, get is an exmaple.
@GetMapping("/authorize")
public boolean authorize(...) {
//Queries database and returns boolean based on match/unmatch.
}
@GetMapping("/user/details")
public UserDetails getUserDetailsForUserId(...) {
//UserDetails is a custom user object which you populate by querying
database.
//you can choose which details to send/not to send based on type of user.
}
}
- FrontEnd (Ajax): вызывает конечную точку backend rest api. Во-первых, он вызывает
/authorize
, чтобы убедиться, что клиент аутентифицирован для входа в систему. В случае успеха он вызывает /user/details
. Теперь некоторые данные извлекаются только для администратора на основе внутренней фильтрации. Поскольку некоторые данные отсутствуют, их нужно показывать вообще (в случае обычного пользователя)
Ссылки:
- Spring Restful services
- Другой учебник по упору и пружине