У меня вопрос о безопасности Rails. Предположим, у нас есть модель User
, и она имеет множество логических значений для ролей, таких как admin
, director
и так далее.attr_accessible/вопрос безопасности с рельсами - какой лучший способ справиться с этим?
Администратор определенно захочет редактировать эти значения в формах, поэтому мы хотим использовать attr_accessible
, чтобы администратор мог это сделать.
Конечно, другие виды использования также смогут редактировать свою модель User - либо редактировать свой профиль, либо приглашать/добавлять новых пользователей в систему самостоятельно. В случае режиссера, мы на самом деле хотим, чтобы они установить роли, которые являются «меньшим», чем режиссер, но мы не хотим, чтобы он был в состоянии установить director
или admin
Поскольку мы подвергаем эти контроллеры, которые модифицируют пользователь, Wouldn 't attr_accessible
разрешить в этом случае director
и admin
? Это звучит как очень большая дыра в безопасности.
Итак, каков наилучший способ ограничения доступа?
Установить каждый параметр по одному за раз?
admin = false
иdirector = false
о действиях по созданию/обновлению? Самое простое решение, но вроде неприятно иметь это в контроллере.Используйте оператор if, чтобы узнать, может ли эта роль пользователя редактировать эти атрибуты и разрешить это?
Использовать рельсы callbacks ?, такие как
before_validation
илиbefore_save
?Некоторые другие декларативные решения?
Благодаря
аккуратного, я должен просто обновить до 3.1, то. Я все еще довольно рано в своем проекте –