Qt Desktop App
Пример настольного приложения Qt для Casdoor
Как запустить пример
Предварительные требования
Инициализация
Вам нужно инициализировать 7 строковых параметров:
| Имя | Описание | Файл |
|---|---|---|
| endpoint | Хост/домен вашего сервера Casdoor | mainwindow.h |
| client_id | ID клиента вашего приложения Casdoor | mainwindow.h |
| client_secret | Секрет клиента вашего приложения Casdoor | mainwindow.h |
| certificate | Публичный ключ для сертификата приложения Casdoor | mainwindow.h |
| org_name | Название вашей организации Casdoor | mainwindow.h |
| app_name | Название вашего приложения Casdoor | mainwindow.h |
| redirect_url | Путь обратного вызова URL для вашего приложения Casdoor, будет http://localhost:8080/callback, если не указан | mainwindow.h |
Если вы не установите параметр endpoint, этот проект будет использовать http://localhost:8000 в качестве сервера Casdoor по умолчанию.
Запуск приложения
Использование Qt Creator
- Открыть
casdoor-cpp-qt-example.pro - Установите
INCLUDEPATHOpenSSL вcasdoor-cpp-qt-example.pro - Нажмите
Ctrl + R, чтобы начать
Предварительный просмотр
После запуска этого настольного приложения Qt на вашем рабочем столе появится новое окно.

Если вы нажмете кнопку Sign In, на вашем рабочем столе появится окно входа.

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

Вы можете просмотреть весь процесс в следующем GIF-изображении.

Как интегрировать
Открытие окна входа
// Load and display the login page of Casdoor
m_webview->page()->load(*m_signin_url);
m_webview->show();
Отслеживание события открытия приложения
// Initialize the TcpServer object and listen on port 8080
m_tcpserver = new QTcpServer(this);
if (!m_tcpserver->listen(QHostAddress::LocalHost, 8080)) {
qDebug() << m_tcpserver->errorString();
close();
}
connect(m_tcpserver, SIGNAL(newConnection()), this, SLOT(on_tcp_connected()));
Использование кода авторизации для получения информации о пользователе
// Get the token and parse it with the JWT library
std::string token = m_casdoor->GetOAuthToken(code.toStdString());
auto decoded = m_casdoor->ParseJwtToken(token);