Я использую Restignver Codeigniter для проекта социальной сети. Я хочу получить доступ ко всем функциям моего сайта (i-e login, getfriends, postcomments, uploadimages и т. Д.) Через API. Теперь у меня есть вопрос, должен ли я установить какой-либо тип аутентификации в API (rest_auth, key и т. Д.) Или я должен оставить его открытым? Как должен быть разработан API?
Я считаю, что используя собственные настройки аутентификации restserver в конфигурации, каждый вызов функции требует аутентификации, но в моем случае мне не нужна аутентификация через функции входа в систему или регистрации.
Могу ли я использовать свои собственные проверки сеансов внутри функций? или есть лучший подход, так как я считаю, что у restserver определенно будет то, чего мне здесь не хватает.
Если вы хотите использовать свою собственную проверку сеансов, вы можете попробовать опцию session
в $config['rest_auth']
,
По документам:
Если вы связываете эту библиотеку с конечной точкой AJAX где клиенты проходят аутентификацию с использованием PHP-сессий тогда вам может не понравиться ни дайджест, ни базовые методы аутентификации.
В этом случае вы можете сказать REST Library какую переменную сеанса PHP проверить. Если переменная существует, то пользователь авторизован. Это будет ваше приложение, чтобы установить эту переменную.
Вы можете определить переменную в $ config [‘auth_source’]. Затем скажите библиотеке использовать переменную сеанса php, установив $ config [‘rest_auth’] в сеанс.
В любом случае, я бы не рекомендовал вам эту опцию, потому что, будучи веб-сайтом социальной сети, в будущем вам может понадобиться, например, мобильное приложение, которому потребуется доступ к этому API. И там у вас не будет сессий PHP для проверки.
Из того, что я прочитал, OAuth2 — лучший вариант для защиты наших Rest API, но я пока не знаю, как его реализовать.
На данный момент то, что я делаю в своем CodeIgniter REST API, — это создание ключей API для каждого пользователя. Эти ключи будут иметь срок годности. Когда срок действия истекает, ключ API удаляется из списка, и пользователь должен повторно пройти аутентификацию (логин), чтобы получить новый ключ API.
Надеюсь, это вам немного поможет. Я тоже нахожусь в этом же поиске, и это еще больше у меня есть.
Других решений пока нет …