Мое приложение использует AngularJs в качестве интерфейсного фреймворка и NodeJs, ExpressJs, как базовую инфраструктуру. Они могут связываться друг с другом с помощью службы RESTful. Приложение позволяет пользователю иметь возможность вручную создавать новую роль с настраиваемыми доступными системами для этой роли.Как проверить авторизацию для RESTful api?
Всякий раз, когда запрос http-запроса, сделанный AngularJs, GET/POST/PUT/DELETE
, необходимо проверить, имеет ли текущий пользователь роль, содержащую требуемые подсистемы или нет.
app.post('/api/v1/budgets/upsert', auth.requiresLogin, auth.requiresRoleSubSystem([10, 11, 12, 13]), budgetCtrl.upsertBudget);
// to access this api link, user need to have role contained at least one of a system in the array [10, 11, 12, 13]
Как вы можете видеть, у меня есть промежуточное программное обеспечение, auth.requiresRoleSubSystem(subSystemIds)
, чтобы сделать это. Он работает без каких-либо проблем, однако я должен вручную установить массив идентификаторов подсистем, необходимых для доступа к каждой ссылке api.
Это очень расстроило и было бы сложно, если бы изменился идентификатор подсистемы. Я думал о некоторых возможных решениях, но все решения практически одинаковы, их необходимо настроить вручную. Любые предложения будут действительно оценены.
Можете ли вы попробовать перехватчик $ http? Например: http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/, поместите свою логику в перехватчик – ABOS
Благодаря @ABOS, это очень полезно для стороннего интерфейса. Тем не менее, мне все же приходится вручную проверять авторизацию на внутренней стороне, как я описал в своем вопросе. – lvarayut