powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security
17 сообщений из 17, страница 1 из 1
Spring Security
    #38898567
zz5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер. Подскажите в какую сторону копать, так сказать, задайте направление.

Допустим у меня в вебприложении есть url вида
/employee/4 , где 4 - ключ сотрудника. При запросе ресурса я беру активного пользователя и проверяю через БД, может ли он просматривать этот ресурс. Примеры, которые находил, оперируют со статичными url. А тут получается, для одного можно, для другого нет. Коды сотрудников берутся из БД.

Хочется определить все доступы к разным ресурсам в каком-то одном месте и не размазывать по контроллерам.
...
Рейтинг: 0 / 0
Spring Security
    #38899338
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz5Добрый вечер. Подскажите в какую сторону копать, так сказать, задайте направление.

Допустим у меня в вебприложении есть url вида
/employee/4 , где 4 - ключ сотрудника. При запросе ресурса я беру активного пользователя и проверяю через БД, может ли он просматривать этот ресурс. Примеры, которые находил, оперируют со статичными url. А тут получается, для одного можно, для другого нет. Коды сотрудников берутся из БД.

Хочется определить все доступы к разным ресурсам в каком-то одном месте и не размазывать по контроллерам.

Может погуглить про аннотацию @PathVariable? Не?!
...
Рейтинг: 0 / 0
Spring Security
    #38899464
zz5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Речь не об этом. Как пользоваться этой аннотацией понимаю. Но представьте десяток таких методов, раскиданных по разным контроллерам. Хочется вытащить логику проверки прав из контроллеров в централизованное место. Везде предлагается intercept url spring security, но что делать, если url содержит ключ domain-объекта и его доступ пользователя должен определиться в runtime?
...
Рейтинг: 0 / 0
Spring Security
    #38899500
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz5,

Если, я правильно понял, то
http://docs.spring.io/spring-security/site/docs/3.0.x/reference/domain-acls.html
...
Рейтинг: 0 / 0
Spring Security
    #38899503
friz777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что вам мешает сделать свой сервис проверки прав?

Код: java
1.
2.
3.
4.
5.
@RequestMapping(value="/employee/{id}")
public String testController(@PathVariable("id") int id){
    if (permissionService.check(id)) return "ok";
      else return "error";
}



permissionService - сервис который будет выбирать данные из бд и смотреть можно ли юзеру что-то делать.
...
Рейтинг: 0 / 0
Spring Security
    #38899685
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
friz777permissionService - сервис который будет выбирать данные из бд и смотреть можно ли юзеру что-то делать.
имменно этого он и не хочет делать, писать if (permissionService.check(id)) в 123 методах
...
Рейтинг: 0 / 0
Spring Security
    #38900489
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем плохо использовать аннотацию @preauthorize?
...
Рейтинг: 0 / 0
Spring Security
    #38900490
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или через spring interceptor
...
Рейтинг: 0 / 0
Spring Security
    #38900540
zz5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, хотелось бы избежать логики в контроллерах, но, боюсь, не получится. Можно через aop, но этот путь видится тернистым. А в идеале нашел такую фичу, но она еще не реализована

http://forum.spring.io/forum/spring-projects/security/121214-web-security-expressions-and-pathvariables
https://jira.spring.io/browse/SEC-2059

Такое решение мне кажется наиболее походящим. Но...
...
Рейтинг: 0 / 0
Spring Security
    #38900574
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz5В общем, хотелось бы избежать логики в контроллерах, но, боюсь, не получится
думаю задача реализуемая, но нужно хорошо познакомиться с внутренней кухней spring security. начальную ссылку тебе дал Blazkowicz, имхо ключевой абзац в ней
автор3. Write an AccessDecisionVoter to enforce the security and open the target Customer domain object directly. This would mean your voter needs access to a DAO that allows it to retrieve the Customer object. It would then access the Customer object's collection of approved users and make the appropriate decision.

вдумчивое гугление и изучение исходников могло бы дать результат, но за тебя это никто делать не будет
...
Рейтинг: 0 / 0
Spring Security
    #38901878
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring Security
    #38901882
zz5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, направление поисков понятно.
...
Рейтинг: 0 / 0
Spring Security
    #38902174
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz5,

А что мешает тупо добавить еще один фильтр?
...
Рейтинг: 0 / 0
Spring Security
    #38903573
zz5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, недеелся (все еще надеюсь) найти более гибкое решение без непосредственного кодирования. Пока смотрю в сторону spring expression + xml.
...
Рейтинг: 0 / 0
Spring Security
    #38903626
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz5,

Там непосредственного кодирования на десяток строк, а регулярки для проверки можно из того же xml или .properties подтаскивать, а то и вообще из базы. :)
...
Рейтинг: 0 / 0
Spring Security
    #38903748
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевТам непосредственного кодирования на десяток строк
деклоративное программирование - 10 строк в конфиге - наше всё ))
Тенденция однако)
...
Рейтинг: 0 / 0
Spring Security
    #38911711
eledev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zz5Добрый вечер. Подскажите в какую сторону копать, так сказать, задайте направление.

Допустим у меня в вебприложении есть url вида
/employee/4 , где 4 - ключ сотрудника. При запросе ресурса я беру активного пользователя и проверяю через БД, может ли он просматривать этот ресурс. Примеры, которые находил, оперируют со статичными url. А тут получается, для одного можно, для другого нет. Коды сотрудников берутся из БД.

Хочется определить все доступы к разным ресурсам в каком-то одном месте и не размазывать по контроллерам.

вам нужно назначать пользователям роли с правами доступа к ресурсу, а не делать проверку в ручную. Spring Security проверяет доступ автоматически.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]