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

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

19.06.2017, 00:26. Показов 1574. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru