Перестал работать сеанс CodeIgniter через Rest API - PullRequest
0 голосов
/ 20 апреля 2020

Серверная часть моего работодателя построена с воспламенителем кода. Это была работа на аутсорсинге до того, как меня приняли на работу.

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

Я уже некоторое время работаю с бэкэндом и приложением. Для аутентификации пользователя приложение сохраняет переменную сеанса, которая генерируется при входе в систему или регистрации. Если пользователю необходимо обновить свой профиль или сделать что-то, что потребует аутентификации, мы будем использовать этот идентификатор сеанса и отправлять его бэкэнду с restpi, используя некоторый заголовок X-IW-SESSION.

Я установил методы в kotlin чтобы сделать именно это:

suspend fun post(urlString: String?, body: String?, session: String?) : String {
        return withContext(Dispatchers.IO) {
            val httpURLConnection: HttpURLConnection?

            val url = URL(urlString)
            httpURLConnection = url.openConnection() as HttpURLConnection
            httpURLConnection.doInput = true
            httpURLConnection.requestMethod = "POST"
            httpURLConnection.setRequestProperty("Accept", "application/json")
            httpURLConnection.setRequestProperty("X-IW-SESSION", session)
            val writer: Writer = BufferedWriter(
                OutputStreamWriter(
                    httpURLConnection.outputStream,
                    "UTF-8"
                )
            )
            if(body != null){
                writer.write(body)
            }
            writer.close()
            when (val inputStream = httpURLConnection.inputStream) {
                null -> {
                    Log.d(TAG, "$inputStream")
                    return@withContext "NULL"
                }
                else -> inputStream.bufferedReader(UTF_8).readText()
            }
        }.toString()

    }

Я пытался изменить это, чтобы сделать вещи проще, но это просто не работает. Так что, если он не сломан, не исправляйте его.

Теперь на стороне сервера, для аутентификации, мы использовали это:

$user_id = $this->session->user_data("user_id");

Это всегда работало, последние 2 года и более это работало. Однако он просто перестал работать через несколько дней go.

В течение всего последнего месяца, когда эта функциональность еще работала, я работал над мобильным приложением, а не с бэкэндом. Кроме того, если бы это был код, который я тогда испортил, этот f * ck-up должен происходить только в одном или двух местах, а не на всем сервере.

Прошло несколько дней, так как я ' Я пробую несколько вещей, чтобы получить эту работу снова, но не повезло.

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

Мы не обновляли код и не модифицировали его более месяца, и мы понятия не имеем, почему это не работает. У кого-нибудь есть идеи по этому поводу?

Обновление:

Поскольку codeigniter сохраняет сеансы в таблице ci_sessions, я проверил, хранится ли там сеанс моей фиктивной учетной записи. И вот, мой фиктивный сеанс аккаунта был правильно зарегистрирован в таблице ci_sessions. Значит, хранилище работает, но я не могу извлечь из него данные.

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