Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374

Получение данных пользователя из БД

19.06.2017, 00:26. Показов 1587. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день при авторизации переход на страницы admin или user.
Проблема что поле ROLE_ получаю null.
Как из SecurityContextHolder.getContext().getAu thentication() вытащить только ROLE без SQL запроса.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2017, 00:26
Ответы с готовыми решениями:

Получение данных по id пользователя SQLite
Можно ли при авторизации записать данные пользователя в какую-нибудь область, чтобы эти данные стали доступны для всех форм. Например у...

Получение данных от пользователя через форму
Добрый день, я только начала изучать django и есть одно задание которое не могу сделать сама. Надеюсь на вашу помощь или подсказку как это...

Взаимодействие пользователя с embed видео. Получение данных
Здравствуйте, уважаемые гуру web кодинга! Начал изучать создания сайта... пока что вроде проблем особых с изучением нет, все довольно...

17
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
19.06.2017, 05:26
Все зависит от того что и как настроено, покажите код настройки, как аутентифицируете/заполняете UserDetails
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 07:48  [ТС]
LeX,
проект на git https://github.com/heros79/SFL
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package home.david.sfl.service;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service;
 
@Service
public class SecurityServiceImpl implements SecurityService {
 
    @Autowired
    private AuthenticationManager authenticationManager;
 
    @Autowired
    private UserDetailsService userDetailsService;
 
    @Override
    public String findLoggedByUserName() {
        Object userDetalis = SecurityContextHolder.getContext().getAuthentication().getDetails();
        Object userDetalisRole = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (userDetalis instanceof UserDetailsServiceImpl) {
            return ((UserDetails) userDetalis).getUsername();
        }
        return null;
    }
}

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package home.david.sfl.service;
 
import home.david.sfl.dao.UserDao;
import home.david.sfl.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.HashSet;
import java.util.Set;
 
public class UserDetailsServiceImpl implements UserDetailsService {
 
    @Autowired
    private UserDao userDao;
 
    @Override
    @Transactional (readOnly = true)
    public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
        User user = userDao.findByUserName(userName);
 
        Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
 
        grantedAuthorities.add(new SimpleGrantedAuthority(user.getRole().name()));
 
        return new org.springframework.security.core.userdetails.User(user.getUserName(), user.getPasswordHash(), grantedAuthorities);
    }
}
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
19.06.2017, 10:30
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
if (userDetalis instanceof UserDetailsServiceImpl) {
* * * * * * return ((UserDetails) userDetalis).getUsername();
* * * * }
ты хоть понимаешь что происходит то?)

instanceof тоже к UserDetails делать надо, к тому же он на сколько помню будет в принципале, плюс в итоге из этого же объекта после каста и сможешь вытянуть роли
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 10:47  [ТС]
LeX,
У меня роли видит и логинится. Вопрос в том как получить роль чтобы при входе проверкой перенаправить на страницу admin или user

Добавлено через 12 минут
Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authent ication.WebAuthenticationDetails@0: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: F5798D2B0E9AD74707D6DCCFB8A6758F; Granted Authorities: ROLE_ADMIN
вот лог все нормально вопрос снова как вытянуть Granted Authorities: ROLE_ADMIN чтобы сравнить с getRole();
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2017, 10:52
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
вопрос снова как вытянуть Granted Authorities: ROLE_ADMIN чтобы сравнить с getRole();
в дебаге сложно чтоли посмотреть на строение объекта?

Добавлено через 54 секунды
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
if (userDetalis instanceof UserDetailsServiceImpl) {
хрень какая-то....
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 10:56  [ТС]
Уважаемые иногда так хочется послать Вас в этот самый useerDetails, да жаль не так воспитан. Или помогите или просто не отвечайте.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2017, 11:26
DavidKarchikyan,

Цитата Сообщение от KEKCoGEN Посмотреть сообщение
в дебаге сложно чтоли посмотреть на строение объекта?
вы посмотрели? Подразумевается что вы сами тоже прилагаете усилия для решения своей проблемы.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 12:20  [ТС]
KEKCoGEN, Посмотрел, еще до того как вы написали, если бы знал как делать и что то не спрашивал бы у Вас)))
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2017, 12:31
DavidKarchikyan, у вас в principal должен быть объект org.springframework.security.core.userde tails.User. Из него можно получить роли. Какой у вас объект в principal сейчас?
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 12:46  [ТС]
org.springframework.security.core.userde tails.UserDetailsService
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
19.06.2017, 12:50
DavidKarchikyan,

Java
1
2
3
4
5
    @RequestMapping (value = {"/"}, method = RequestMethod.GET)
    public String choise (User user) {
        System.out.println(SecurityContextHolder.getContext().getAuthentication().getAuthorities());
        return "redirect:/";
    }
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 12:56  [ТС]
org.springframework.security.authenticat ion.UsernamePasswordAuthenticationToken@ 4524ac65: Principal: org.springframework.security.core.userde tails.User@586034f: Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authent ication.WebAuthenticationDetails@166c8: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: DDAC33DBEEBBE50D90200092F9EF6384; Granted Authorities: ROLE_ADMIN
вот лог дебага, но млин как его сверить с getROLE чтобы при админе на его страницу переходило, при usere на его страницу
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2017, 14:06
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
org.springframework.security.core.userde tails.UserDetailsService
у вас где-то что-то неверно написано. Сервиса тут быть не должно. Принципал должен быть ваш юзер.
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
19.06.2017, 14:20
Лучший ответ Сообщение было отмечено DavidKarchikyan как решение

Решение

DavidKarchikyan,

Попробуйте так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @RequestMapping (value = {"/"}, method = RequestMethod.GET)
    public String choise (User user, HttpServletRequest request) {
 
        System.out.println("Davidka " + user.getRole() + " " + SecurityContextHolder.getContext().getAuthentication());
        if (request.isUserInRole(User.Role.ROLE_USER.name())) {
            return "redirect:/user";
        }
 
        if (request.isUserInRole(User.Role.ROLE_ADMIN.name())) {
            return "redirect:/admin";
        }
 
        return "redirect:/login";
    }
1
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 15:26  [ТС]
reisal78, спасибо большое получилось
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
19.06.2017, 15:49
DavidKarchikyan, да не зачто... в гугл -> spring hasrole in controller -> вторая ссылка 15 секунд времени =)
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.06.2017, 15:52  [ТС]
reisal78, ))) да искал что-то не то выдавало)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2017, 15:52
Помогаю со студенческими работами здесь

Получение достоверных данных от пользователя (версию браузера, ip адрес)
Можно ли гарантированно получить некоторые заведомо известные данные от пользователя. То есть хочу получить версию браузера, ip адрес...

Сделать недоступным для ввода пользователя UserControl, при этом отображая анимацию, что идёт получение данных
Подскажите, народ. Есть мысль использовать AdornerLayer. Может у кого мысли есть какие, как это лучше вооще сделать на практике? Суть в...

Получение токена пользователя VK
При варианте как на первом скрине - просто белый экран, ничего не происходит при запуске скрипта на сервере. При варианте как на втором...

Получение имя пользователя
Здравствуйте! Подскажите, как получить имя пользователя, под которым был произведен вход на сервер SQL? То есть если я зашла с именем...

Получение имени пользователя
Каким скриптом можно получить имя пользователя ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru