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/DesktopApp
dotnet 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);