Как я могу использовать Spring Security вместе с API Spring Boot Rest? - PullRequest
1 голос
/ 13 июля 2020

Я сделал веб-приложение, которое управляет сотрудниками. Я хочу разделить его на два, для администратора и пользователя, и дополнительно отключить некоторые функции в пользовательском интерфейсе в зависимости от их роли. Из того, что я читал, Spring Security идеально подходит для этого, но моя проблема в том, что мой интерфейс - это один проект, а API - отдельный проект, поэтому у меня нет никаких daos et c в проекте с файлами jsp. (Я использую AJAX, чтобы получить необходимую информацию из базы данных)

Как я могу использовать Spring Security в таком сценарии и есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 16 июля 2020

В настоящее время ваш внешний интерфейс (пользовательский интерфейс 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. Теперь некоторые данные извлекаются только для администратора на основе внутренней фильтрации. Поскольку некоторые данные отсутствуют, их нужно показывать вообще (в случае обычного пользователя)

Ссылки:

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