@Mybiz

Как правильно организовать доступ к ресурсам пользователя?

Привожу пример:
Например, есть некая таблица БД article c такими полями:
article_id
user_id
title
content

Есть некое АПИ

/api/article/1
/api/article/2
/api/article/3

Например,
GET /api/article/2
POST /api/article/update/3 title=newtitle&content=newcontent

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

SELECT * FROM article where article_id = 2 AND user_id = 111
UPDATE article SET ..... WHERE article_id = 3 AND user_id = 111

Но это делать код избыточным, возможно есть какой-то алгортм который позволит определять есть ли права у текущего юзера на выполнение подобно sql
  • Вопрос задан
  • 2186 просмотров
Пригласить эксперта
Ответы на вопрос 4
@angry_bender
PHP, JS
Авторизацию накрутить и по правилам доступа смотреть.
Ответ написан
Комментировать
Glueon
@Glueon
DevOps
Можно написать функцию CanI, которая будет вызываться перед выполнением запроса. Она будет проверять каким-то образом есть ли у пользователя право проводить данную операцию и если нет - бросать какой-нибудь AccessViaolationException. Тогда в самом SQL-е это предусматривать не надо будет.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
вначале делаем проверку на доступ:
SELECT COUNT(*) FROM article where article_id = 2 AND user_id = 111 limit 1
Если не 0 - производим все нужные операции над данной публикацией уже без указания пользователя в запросах.
Ответ написан
Комментировать
@Mybiz Автор вопроса
а если доставать перед каждым запросом некий набо записей. типа SELECT arcticle_id FROM article where user_id=111; SELECT post_id FROM posts WHERE user_id=111.

формировать массив $resourses = [ "arcticles" => [2,5,8], "posts"=>[20,19] ] ит д. как вам вариант?

очень интересует как реализовать максимально грамотно и такоэ реализовано в известных проектах
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы