Spring Boot JWT токен Объектная выборка - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть таблица деления с тремя рядами, как

  • имя_раздела

    1        divA
    2        divB
    3        divC
    

и клиент как

CIDIID Имя подразделения ID

1     cust01       1
2     cust02       1
3     cust03       2
4     cust04       1
5     cust05       2
6     cust06       3
7     cust07       3
8     cust08       1

и пользовательская таблица как

userId uname пароль roleId DivisionId

   1      john      ***       1          1
   2      ravi      ***       2          1
   3      bush      ***       2          2
   4      sam       ***       2          3
   5      jasd      ***       1          2
   6      jas       ***       2          2
   7      jioa      ***       2          3
   8      saho      ***       2          1
   9      vija      ***       1          1

имя-роли

   1      ADMIN
   2      USER

когда пользователь пытается войти с тремя параметрами, такими как { «деление»: «дива», "uname": "john", "пароль": "****" }

если пользователь успешно вошел в систему, я сгенерирую токен JWT, включающий разделение, роль и т. Д.

@GetMapping("/listcustomers")
public List<Customers> getCustomers(){
return customerService.findAll();
}

В этом сценарии, когда пользователь пытается получить доступ к api / listcustomers api из таблицы клиентов, он должен получить список клиентов, которые сопоставляются с идентификатором подразделения, зарегистрированным в пользователе и divisonId только из назначенного клиентом подразделения, и он не должен быть в состоянии получить доступ. ДРУГИЕ КЛИЕНТЫ ОТДЕЛЕНИЯ ИЗ ЛЮБОГО ГДЕ, Вот как я ищу ответ, Нет, если бы я получил решение, Пожалуйста, помогите мне, а также есть много apis с назначенными делением объектами, И РОЛЬ основывает свою работу нормально, но деление мудрое я не получаю,

Я использую весеннюю загрузку 2.0.0. Release, Java 8, Hibernate, JWT Authentication, весенняя безопасность

1 Ответ

0 голосов
/ 04 сентября 2018

Предполагая, что вы создали токен jwt, вы можете использовать Principal для получения имени пользователя из токена. Затем вы определяете findByUsername , который возвращает отфильтрованных клиентов для этого пользователя.

import java.security.Principal;

@GetMapping("/listcustomers")
public List<Customers> getCustomers(Principal principal){
    String currentUser = principal.getName()
     return customerService.findByUsername(currentUser );
}
...