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);