1. анализ применения контекстного механизма контроля


Download 1.31 Mb.
Pdf ko'rish
bet12/21
Sana19.06.2023
Hajmi1.31 Mb.
#1611011
TuriРеферат
1   ...   8   9   10   11   12   13   14   15   ...   21
Bog'liq
ВКР - АкмальА

Права доступа. В представленном коде реализован механизм контроля 
доступа с помощью матрицы доступа `access_matrix`, которая определяет
какие пользователи имеют доступ к каким ресурсам. Разберем его подробнее: 
В классе `AccessControl`: 
- `access_matrix`: Это словарь, где ключами являются названия ресурсов 
(например, "door", "lighting", "security_system", "thermostat"), а значениями - 
списки пользователей, имеющих доступ к этим ресурсам. Например, 
`access_matrix 

{"door": 
["admin", 
"guest"], 
"lighting": 
["admin"], 
"security_system": ["admin"], "thermostat": ["admin", "guest"]}` указывает, что 


51 
ресурс "door" доступен для пользователей "admin" и "guest", ресурс "lighting" 
- только для пользователя "admin" и т.д. 
- `check_credentials(self, username, password)`: Метод проверяет 
аутентификационные данные пользователя. Он получает введенный логин и 
пароль, хеширует введенный пароль с помощью алгоритма SHA-256 и 
сравнивает его с хранимым хешем пароля из базы данных. Если 
аутентификация прошла успешно, метод устанавливает текущего 
пользователя (`self.current_user = username`) и возвращает `True`, иначе 
возвращает `False`. 
- `grant_access(self, user, resource)`: Метод проверяет, имеет ли 
указанный пользователь доступ к указанному ресурсу. Он проверяет, 
присутствует ли пользователь в списке доступных пользователей для данного 
ресурса в `access_matrix`. Если пользователь имеет доступ, метод создает и 
возвращает экземпляр класса `AccessContext`, представляющий контекст 
доступа. Если доступ запрещен, метод возвращает экземпляр класса 
`NullContext`, который является пустым контекстом. 
- `execute_command(self, resource, command)`: Метод выполняет команду 
для указанного ресурса. Он отправляет POST-запрос на указанный API-
эндпоинт с информацией о ресурсе, команде, аутентификационном коде и 
текущем пользователе. Результат выполнения команды выводится в консоль. 
Таким 
образом, 
при 
входе 
в 
контекст 
доступа 
(`with 
self.access_control.grant_access(user, resource):`) происходит проверка доступа 
пользователя к ресурсу. Если доступ разрешен, команды могут быть 
выполнены для этого ресурса. Если доступ запрещен, пользователю будет 
отказано в доступе. Это обеспечивает контроль доступа к ресурсам в системе 
умного дома на основе матрицы доступа и проверки аутентификационных 
данных. 
При использовании кода выше, вывод программы будет зависеть от ввода 
пользователя и результатов выполнения команд. Давайте рассмотрим 
возможные сценарии и соответствующие выводы: 


52 
1. При запуске программы будет предложено ввести логин и пароль. 
Если введенные учетные данные совпадают с данными из базы данных, будет 
отображено меню выбора ресурса. 
2. Если введены неверные учетные данные (неверный логин или пароль), 
будет выведено сообщение "Неверный логин или пароль." и программа 
завершится. 
3. После успешной аутентификации пользователь будет представлен 
меню выбора ресурса, где пользователю нужно будет ввести номер ресурса 
или команду "0" для выхода. 
4. Если пользователь выбирает номер ресурса, программа попросит 
ввести команду (ВКЛ/ВЫКЛ). Затем программа выполнит команду для 
выбранного ресурса и выведет соответствующее сообщение об успешном 
выполнении или ошибке. 
5. Если пользователь выбирает "0" для выхода, программа завершится. 
Важно отметить, что программа не содержит реализации деталей 
выполнения команд в системе управления, а только имитирует их выполнение 
с помощью вывода сообщений в консоль и отправки запросов на API-
эндпоинт. Результаты выполнения команд могут быть определены внешними 
системами или компонентами, с которыми программа взаимодействует через 
API. 
Рис.2.5. Вывод программы 


53 
Рис.2.6. Отказ в доступе из-за неверного логина 
Рис.2.7. Отказ в доступе из-за не неверного доступа к ресурсу 
Данный код представляет пример простой системы умного дома, 
которая использует механизм контроля доступа для ограничения доступа 
пользователей к различным ресурсам, таким как двери, освещение, система 
безопасности и термостат. Он также демонстрирует использование базы 
данных SQLite для хранения информации о пользователях и их учетных 
данных. 
Код содержит два основных класса: `SmartHome` и `AccessControl`. 
Класс `SmartHome` отвечает за интерфейс пользователя, авторизацию и 
управление доступом к ресурсам. Класс `AccessControl` отвечает за проверку 
учетных данных, управление доступом к ресурсам и выполнение команд. 
Процесс работы программы следующий: 
1. Пользователь вводит свой логин и пароль для авторизации. 


54 
2. Если учетные данные верны, пользователь получает доступ к 
главному меню, где ему предлагается выбрать ресурс. 
3. Пользователь выбирает ресурс и вводит команду для выполнения. 
4. Код проверяет доступ пользователя к выбранному ресурсу, и если 
доступ разрешен, выполняет команду. 
5. Информация о выполнении команды регистрируется в лог-файле 
"access.log". 
Общий вывод по коду заключается в том, что он предоставляет пример 
реализации простой системы умного дома с механизмом контроля доступа. Он 
демонстрирует принципы аутентификации пользователей, управления 
доступом к ресурсам и выполнения команд. Код также показывает 
использование базы данных для хранения информации о пользователях и 
логирования действий. 


55 

Download 1.31 Mb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   21




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling