Стиль кодирования иерархии безопасности с Coldfusion - PullRequest
2 голосов
/ 27 мая 2011

Я какое-то время создавал это довольно большое веб-приложение и обновлял его. Со временем я узнал намного больше вещей, чтобы сделать систему более функциональной. Теперь я возвращаюсь и пытаюсь избавиться от кода, который нельзя использовать повторно или просто странный / причудливый.

Мой первый шаг - просмотр иерархии безопасности. Моя система работает на магистрали уровня безопасности. X уровень может просматривать X вещи ... и т. Д.

Как лучше всего это кодировать? Прямо сейчас у меня есть запрос, который извлекает их уровень безопасности и устанавливает его как переменную сеанса. Эти люди также могут принадлежать ко многим другим «отделам» с различными уровнями безопасности. (Отдел также сохраняется как переменная сеанса.) Веб-страницы в моей системе проверяют мой заголовок, чтобы узнать, могут ли они получить доступ к странице или нет. Однако есть места, где у меня есть динамические формы и данные, которые могут просматривать только определенные уровни безопасности. В этих областях у меня есть заявления cfif о том, что уровень безопасности равен определенному уровню ... покажите им это или покажите им. Так что на той же странице кто-то может увидеть что-то другое.

Есть ли лучший способ справиться с этим? Я чувствую, что мой код не так хорош, как мог бы быть. (Ну, это никогда не будет так хорошо, как могло бы быть.) Я в основном ищу предложения о том, как лучше обращаться с иерархией безопасности.

(Примечание: у меня уже есть код системы, просто я ищу совет по стилю кодирования или проверке, если то, что я делаю, звучит правильно! ")

Я также работаю над тем, чтобы сделать мои запросы более функциональными, как ... и все в одном месте, чтобы они не появлялись случайно на некоторых страницах.

1 Ответ

3 голосов
/ 27 мая 2011

ColdFusion имеет встроенную систему безопасности на основе ролей. У вас есть <cfloginuser> с атрибутом roles и функцией IsUserInRole() для проверки полномочий.

Кроме того, у вас есть атрибут roles для функций CFC . Они занимают разделенный запятыми список ролей, в которых пользователь должен участвовать, чтобы иметь возможность выполнять функцию.

Ваша задача - управлять членством в ролях (хотя и таблицей базы данных) и устанавливать пользовательский контекст при начале сеанса.

Если вы абстрагируете свою бизнес-логику от компонентов и задумаетесь над созданием разумных ролей, вы можете навязать очень простую в использовании модель безопасности для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...