К тому времени, когда вы пытаетесь обновить дату и время, имя пользователя уже изменилось, поэтому ваш оператор UPDATE не находит ни одной строки со старым username
.
В операторе, который не работает, передайте new_username
вместо username
в предложение WHERE оператора UPDATE.
Кроме того, вы можете улучшить его и сократить 3 запроса до 1:
cursor.execute(
"""
UPDATE logins
SET (username = ?, changeuser_date = ?, changeuser_time = ?)
WHERE username = ?
""",
(new_username, date, time, username))
То же самое касается обновления пароля:
cursor.execute(
"""
UPDATE logins
SET (password = ?, changepass_date = ?, changepass_time = ?)
WHERE username = ?
""",
(new_pass, date, time, username))
Я применил все вещи, которые являются вышеупомянутыми, но моя проблема не решена.
В моем случае это происходит из-за прокси-сервера. Тогда я удалил все полномочие, и управляйте моим веб-сервисом. Тогда это хорошо работает.
Хоуп это будет Вы!!!!!!
Похоже, вы задали имя пользователя дважды вместо имени пользователя и пароля.
Если у вас есть базовая проверка подлинности и вы не отправляете имя пользователя и пароль с запросом, вы получаете вызов ответ.
Попробуйте отправить имя пользователя и пароль не в http с базовой аутентификацией (это может смутить IIS), а только в заголовках мыльных сообщений со следующей схемой:
<binding name="...">
<security mode="TransportWithMessageCredential" >
<message clientCredentialType="UserName" />
</security>
</binding>
Как: использовать транспортную безопасность и Учетные данные для сообщения
Возможно, вам также потребуется дополнительно указать
Я предполагаю, что вы размещаете ваш сервис в IIS. Тогда проблема заключается в том, что IIS перехватывает запрос HTTPS и выполняет аутентификацию уровня IIS до того, как Framework WCF и ваш собственный валидатор имеет возможность ударить.
В вашем примере IIS на самом деле будет искать локальный пользователь 111 «С паролем '111' на сервере работает IIS. Попробуйте создать этот пользователь на сервере, и вы, вероятно, получите другой результат.
Одним из решений является проведение вашего WCF ServiceHost где-то еще, например, в службе Windows. Другое решение состоит в том, чтобы изменить свою схему безопасности для транспортировки свидетельствуют. Наконец, вы можете проверить этот модуль HTTP OSS: Таможенная базовая аутентификация для IIS - кажется, что делает трюк, который нам нужен.