Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security / 17 сообщений из 17, страница 1 из 1
08.03.2015, 21:50
    #38898567
zz5
zz5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security
Добрый вечер. Подскажите в какую сторону копать, так сказать, задайте направление.

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

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

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

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

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

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

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

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

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

Такое решение мне кажется наиболее походящим. Но...
...
Рейтинг: 0 / 0
10.03.2015, 23:40
    #38900574
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security
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
11.03.2015, 21:38
    #38901878
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security
...
Рейтинг: 0 / 0
11.03.2015, 21:42
    #38901882
zz5
zz5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security
Всем спасибо, направление поисков понятно.
...
Рейтинг: 0 / 0
12.03.2015, 11:01
    #38902174
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security
zz5,

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

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

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

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

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


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