|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Вопрос 1. На данный момент ролей у меня 6 штук. Для каждой роли есть набор привилегий. У пользователя может быть не одна роль, а сразу несколько. Сами роли зашиты на сервере в enum и в БД хранятся имена enum констант. Привилегий в БД нет вообще. На данный момент привилегии я сделал на xml: Код: xml 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92.
К этому xml-ю есть код, который создает Map<RoleType, List<String>> , где коллекция строк это привилегии в строковом представлении. Есть ли какие-то другие варианты реализации данной части вопроса? Вопрос 2. Дополнительные поля роли. У некоторых ролей есть дополнительные сведения, которые есть, только если есть роль у пользователя. Поля так же описал в xml: Код: xml 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
В БД есть таблицу, которая связывает пользователя с ролью. И к этой таблице привязывается таблица, в которой находятся поля. Есть ли альтернативы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:43 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
для чего роли и привелегии? нафига xml? есть база, делаешь запрос по юзеру - получаешь то к чему у. него есть доступ, и прочее ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:50 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop, а нужна такая гибкость вообще? Так сложно делают обычно когда роли/привилегии могут настраиваться динамически. А в случаях по-проще можно и хардкодить условия завязываясь на роли. В случаях чуть сложней можно в сами енумы добавлять поля: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Хотя твой вариант на самом деле тоже не супер сложным выглядит. А вот по поводу доп полей и как они к разграничению прав относятся - не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 21:13 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Tsyklop, а нужна такая гибкость вообще? Так сложно делают обычно когда роли/привилегии могут настраиваться динамически. А в случаях по-проще можно и хардкодить условия завязываясь на роли. В случаях чуть сложней можно в сами енумы добавлять поля: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Хотя твой вариант на самом деле тоже не супер сложным выглядит. А вот по поводу доп полей и как они к разграничению прав относятся - не понял. На самом деле задумался (еще после комментария вади) в необходимости привилегий как таковых. В будущем можно будет прикрутить, а сейчас это будет избыточно. Дополнительные поля и привилегии никак между собой не связаны. Это два разных вопроса. Возможно название ввело в заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 21:42 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop Есть ли какие-то другие варианты реализации данной части вопроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:08 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Tsyklop Есть ли какие-то другие варианты реализации данной части вопроса? Что за либа? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:10 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop, Spring security ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:26 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Tsyklop, Spring security ? Что-то не совсем понял. Списка ролей не секюрити нет. Их даёт сам программист. И проводит настройку доступов тоже программист. Секюрити дает функционал по аутентификации. Где в секюрити роли и привилегии, хранение в бд... не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:18 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:03 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Roman Osipov , не, ACL - это про секюрити на объекты. Т.е. есть вполне конкретный курс в таблице курсов - вот на него хочу выдать права таким-то пользователям. А то что в первом посте у Tsyklop - это все-таки разрешения на выполнение функций в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:33 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, На первый взгляд - ничего не мешает определить в качестве Domain Objects бины, реализующие DAO или сервисный слой. И строки в таблице и наши классы в приложении - суть ресурсы, к которым можно задать ACL доступ. Или не так понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 08:27 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Roman Osipov, ну судя по XML файлу там по сути ограничение на ендпоинты. Например: Код: xml 1. 2. 3. 4. 5. 6. 7.
Тут говорится что такая привилегия позволяет просматривать курсы. Но тут не сказано какой конкретно курс. А значит это то же самое что в Spring Security сконфигурить ендпоинт и сказать что пользователь с ролью USER имеет право его вызывать. А в ACL любой будет иметь возможность вызвать ендпоинт, но потом нужно будет сходить в БД и убедиться что мы можем просматривать именно курс с ID=x. Это медленно и сложно, я бы рассматривал такой вариант только если других нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 09:22 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
самое главное нет ответа для чего роли и привилегии? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:02 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Roman Osipov, ну судя по XML файлу там по сути ограничение на ендпоинты. Например: Код: xml 1. 2. 3. 4. 5. 6. 7.
Тут говорится что такая привилегия позволяет просматривать курсы. Но тут не сказано какой конкретно курс. А значит это то же самое что в Spring Security сконфигурить ендпоинт и сказать что пользователь с ролью USER имеет право его вызывать. А в ACL любой будет иметь возможность вызвать ендпоинт, но потом нужно будет сходить в БД и убедиться что мы можем просматривать именно курс с ID=x. Это медленно и сложно, я бы рассматривал такой вариант только если других нет. В доках Спринга декларируется, что структуры ACL очень эффективно кэшируются - проблемы с производительностью вряд ли случатся. И стандартный функционал наверное лучше чем велосипедный - он уже оттестирован и по крайней мере баги можно загуглить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:15 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop PetroNotC Sharp Tsyklop, Spring security ? Что-то не совсем понял. Списка ролей не секюрити нет. Их даёт сам программист. И проводит настройку доступов тоже программист. Секюрити дает функционал по аутентификации. Где в секюрити роли и привилегии, хранение в бд... не понимаю. Это значит что фильтруя урл, ты получаешь первый уровень по разрешениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:23 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
вадя, В веб обычно роли не от субд. Хибер ходит под одним логином ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:24 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, В веб обычно роли не от субд. Хибер ходит под одним логином ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:54 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp вадя, В веб обычно роли не от субд. Хибер ходит под одним логином В системах может быть разграничение пользователей по возможностям. Например Обычный юзверь, Манагер и Админ. На бэке есть список эндпоинтов. Но обычный пользователь не может делать то, что делает Админ и это нужно как-то контролировать. Контролируется ролями (в большей части приложений) и привилегиями (более гибкая штука. Зачастую используется в CRM системах (я так думаю), где те самые роли с привилегиями можно настраивать через БД, то бишь все хранится в бд.). Каждому пользователю в системе выдается роль или несколько ролей при помощи которых ведется контроль доступа к разным эндпоинтам на бэке. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 11:11 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Roman Osipov Stanislav Bashkyrtsev Roman Osipov, ну судя по XML файлу там по сути ограничение на ендпоинты. Например: Код: xml 1. 2. 3. 4. 5. 6. 7.
Тут говорится что такая привилегия позволяет просматривать курсы. Но тут не сказано какой конкретно курс. А значит это то же самое что в Spring Security сконфигурить ендпоинт и сказать что пользователь с ролью USER имеет право его вызывать. А в ACL любой будет иметь возможность вызвать ендпоинт, но потом нужно будет сходить в БД и убедиться что мы можем просматривать именно курс с ID=x. Это медленно и сложно, я бы рассматривал такой вариант только если других нет. В доках Спринга декларируется, что структуры ACL очень эффективно кэшируются - проблемы с производительностью вряд ли случатся. И стандартный функционал наверное лучше чем велосипедный - он уже оттестирован и по крайней мере баги можно загуглить. Функционал с ролями, привилегиями не велосипед - это есть в секюрити. То что предлагаете Вы интересно, но для проекта избыточно. Хотя в нескольких моментах вижу применение. Спасибо за информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 11:13 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop PetroNotC Sharp Tsyklop, Spring security ? Что-то не совсем понял. Списка ролей не секюрити нет. Их даёт сам программист. И проводит настройку доступов тоже программист. Секюрити дает функционал по аутентификации. Где в секюрити роли и привилегии, хранение в бд... не понимаю. В Spring DefaultSecurityFilterChain вы проверяете урл - это ресурс. И что с ним делаем по CRUD. Хранить роли можно где угодно. sql.ru/app/post/123456 delete or get or.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 11:47 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop, если это веб - то для каждой роли пишется разрешённая страница, на этой странице формируются только те данные, что позволены данной роли. если если у роли есть привилегии - то в зависимости от привилегии формируются те или иные части dom. ну и соответственно куски js. при создании страницы загружаются из базы разрешения - и вперед ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 12:09 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Roman Osipov Stanislav Bashkyrtsev Roman Osipov, ну судя по XML файлу там по сути ограничение на ендпоинты. Например: Код: xml 1. 2. 3. 4. 5. 6. 7.
Тут говорится что такая привилегия позволяет просматривать курсы. Но тут не сказано какой конкретно курс. А значит это то же самое что в Spring Security сконфигурить ендпоинт и сказать что пользователь с ролью USER имеет право его вызывать. А в ACL любой будет иметь возможность вызвать ендпоинт, но потом нужно будет сходить в БД и убедиться что мы можем просматривать именно курс с ID=x. Это медленно и сложно, я бы рассматривал такой вариант только если других нет. В доках Спринга декларируется, что структуры ACL очень эффективно кэшируются - проблемы с производительностью вряд ли случатся. И стандартный функционал наверное лучше чем велосипедный - он уже оттестирован и по крайней мере баги можно загуглить. Но как ни крути - ACL решает совершенно другую проблему. Это логически работает не как роли - это совершенно другой подход и предназначен он для другого. Его просто не получится использовать для решения подобных задач. Разве что сами задачи поменять и реализовывать другие требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 12:56 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
вадя Tsyklop, если это веб - то для каждой роли пишется разрешённая страница, на этой странице формируются только те данные, что позволены данной роли. если если у роли есть привилегии - то в зависимости от привилегии формируются те или иные части dom. ну и соответственно куски js. при создании страницы загружаются из базы разрешения - и вперед У меня REST приложение. Бэк на спринге, а фронт на ReactJS. У меня сервер ничего не знает про фронт. У него есть ресурсы, которые он обслуживает. Запросы можно делать через тот же Postman. Посему роли нужны на бэке. Понятное дело, что фронт знает роль юзверя и в зависимости от этого отрисовывает UI. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 13:03 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
вадя, Не прикидывайся. Вопрос выше как в коде писать роли. Не на jdbc же) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 13:06 |
|
Реализация привилегий и дополнительных полей роли
|
|||
---|---|---|---|
#18+
Tsyklop вадя Tsyklop, если это веб - то для каждой роли пишется разрешённая страница, на этой странице формируются только те данные, что позволены данной роли. если если у роли есть привилегии - то в зависимости от привилегии формируются те или иные части dom. ну и соответственно куски js. при создании страницы загружаются из базы разрешения - и вперед У меня REST приложение. Бэк на спринге, а фронт на ReactJS. У меня сервер ничего не знает про фронт. У него есть ресурсы, которые он обслуживает. Запросы можно делать через тот же Postman. Посему роли нужны на бэке. Понятное дело, что фронт знает роль юзверя и в зависимости от этого отрисовывает UI. При такой постановке знание фронту своей роли - ничего не даёт. Фронт полностью зависит от бэка и просто отрисовывает то что ему дали. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 13:09 |
|
|
start [/forum/topic.php?fid=59&msg=40107225&tid=2120322]: |
0ms |
get settings: |
8ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
53ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
440ms |
get tp. blocked users: |
0ms |
others: | 2474ms |
total: | 2987ms |
0 / 0 |