dotNET Desktop App
Приклад десктопного додатку Dotnet для Casdoor.
Як запустити приклад
Передумови
- dotNET 6 SDK
- WebView2 Runtime (Зазвичай вже встановлено на Windows)
Ініціалізація
Для ініціалізації потрібно 5 параметрів, всі вони мають бути типу string:
| Ім'я | Опис | Файл |
|---|---|---|
| Domain | Хост/домен вашого сервера Casdoor | CasdoorVariables.cs |
| ClientId | ID клієнта вашого додатку Casdoor | CasdoorVariables.cs |
| AppName | Назва вашого додатку Casdoor | CasdoorVariables.cs |
| CallbackUrl | Шлях до URL-адреси зворотного виклику для вашого додатку Casdoor. Якщо не надано, буде casdoor://callback | CasdoorVariables.cs |
| ClientSecret | Секретний ключ клієнта вашого додатку Casdoor | CasdoorVariables.cs |
Якщо ви не встановите ці параметри, проект за замовчуванням буде використовувати онлайн-демо Casdoor як сервер Casdoor та Casnode як додаток Casdoor.
Виконання
Visual Studio
- Відкрийте
casdoor-dotnet-desktop-example.sln - Натисніть
Ctrl + F5, щоб почати
Командний рядок
cd src/DesktopAppdotnet run
Перегляд
Після запуску десктопного додатку dotNET на вашому робочому столі з'явиться нове вікно.
Якщо ви натиснете кнопку Casdoor Login, на вашому робочому столі з'явиться вікно входу. 
Після успішного входу на вашому робочому столі з'явиться вікно профілю користувача, де буде відображено ваше ім'я користувача.
Ви можете переглянути весь процес у GIF-зображенні нижче.
Як інтегрувати
Відкриття вікна входу
var login = new Login();
// Triggered when login succeeds, you will receive an auth code in the event handler
login.CodeReceived += Login_CodeReceived;
login.ShowDialog();
Використання коду авторизації для отримання інформації про користувача
public async Task<string?> RequestToken(string clientId, string clientSecret, string code)
{
var body = new
{
grant_type = "authorization_code",
client_id = clientId,
client_secret = clientSecret,
code
};
var req = new RestRequest(_requestTokenUrl).AddJsonBody(body);
var token = await _client.PostAsync<TokenDto>(req);
return token?.AccessToken;
}
public async Task<UserDto?> GetUserInfo(string token)
{
var req = new RestRequest(_getUserInfoUrl).AddQueryParameter("accessToken", token);
return await _client.GetAsync<UserDto>(req);
}
...
var token = await _casdoorApi.RequestToken(
CasdoorVariables.ClientId,
CasdoorVariables.ClientSecret,
authCode
);
var user = await _casdoorApi.GetUserInfo(token);