Как получить полномочия / роль текущего пользователя и сделать некоторые расчеты в соответствии с ролью в весенней безопасности - PullRequest
0 голосов
/ 15 октября 2018

Я делаю проект по системе управления библиотекой в ​​режиме весенней загрузки.Чтобы рассчитать штрафы за выпущенные книги в соответствии с ролями, я хочу получить текущую роль пользователя после заимствования книги.Текущее имя пользователя, роль book_id и штраф будут сохранены в другой таблице.Я могу получить имя пользователя для текущего пользователя, но не могу получить роль текущего пользователя.

Может кто-нибудь помочь мне!

// Часть класса Controller

 @RequestMapping("/homepage/borrowBook")
            public String addBookings(Bookings bk, HttpServletRequest rqst) {
                rqst.setAttribute("mode", "MODE_BORROW");
                return "homepage";
            }
    @PostMapping("/homepage/save-borrow")
        public String saveBorrow(Bookings bk, HttpServletRequest rqst, Authentication auth) {
            rqst.setAttribute("mode", "MODE_BORROW");
            if (BookRepo.exists(bk.getBook_id())) {
                bk.setUser(auth.getName());

/////here i want the current user authority to be saved/checked.
                bookingsRepo.save(bk);
                return "homepage";
            } else {
                rqst.setAttribute("error", "Book doesn't exist");

                return "homepage";
            }
        }

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы можете получить полномочия, используя SecurityContextHolder или через объект Inject Authentication на вашем контроллере.

Найдите ниже через SecurityContextHolder

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

Collection<SimpleGrantedAuthority> list = (Collection<SimpleGrantedAuthority>) auth.getAuthorities();

for (SimpleGrantedAuthority permission : list) {
     System.out.println(permission.getAuthority());
}

Если вам нужна какая-либо другая информация о зарегистрированному пользователя вы можете получить доступ к UserDetails следующим образом

User userDetails = (User) auth.getPrincipal();
0 голосов
/ 15 октября 2018

Вы можете использовать Authentication.getAuthorities () , чтобы получить роли текущего пользователя, вошедшего в систему.

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