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
- Установите
INCLUDEPATH
OpenSSL в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);