ข้ามไปยังเนื้อหาหลัก

แอปพลิเคชันเดสก์ท็อป dotNET

ตัวอย่าง แอปพลิเคชันเดสก์ท็อป Dotnet สำหรับ Casdoor

วิธีการรันตัวอย่าง

ข้อกำหนดเบื้องต้น

การเริ่มต้นใช้งาน

การเริ่มต้นใช้งานต้องการพารามิเตอร์ 5 ตัว ทั้งหมดเป็นประเภท string:

ชื่อคำอธิบายไฟล์
Domainโฮสต์/โดเมนของเซิร์ฟเวอร์ Casdoor ของคุณCasdoorVariables.cs
ClientIdClient ID ของแอปพลิเคชัน Casdoor ของคุณCasdoorVariables.cs
AppNameชื่อของแอปพลิเคชัน Casdoor ของคุณCasdoorVariables.cs
CallbackUrlเส้นทางของ URL สำหรับการเรียกกลับสำหรับแอปพลิเคชัน Casdoor ของคุณ หากไม่ได้ระบุไว้ จะเป็น casdoor://callbackCasdoorVariables.cs
ClientSecretClient Secret ของแอปพลิเคชัน Casdoor ของคุณCasdoorVariables.cs

หากคุณไม่ตั้งค่าพารามิเตอร์เหล่านี้ โปรเจ็กต์จะใช้ ตัวอย่างออนไลน์ของ Casdoor เป็นเซิร์ฟเวอร์ Casdoor และ Casnode เป็นแอปพลิเคชัน Casdoor

การทำงาน

Visual Studio

  1. เปิด casdoor-dotnet-desktop-example.sln
  2. กด Ctrl + F5 เพื่อเริ่มต้น

บรรทัดคำสั่ง

  1. cd src/DesktopApp
  2. dotnet run

ตัวอย่าง

หลังจากรันแอปพลิเคชันเดสก์ท็อป dotNET แล้ว หน้าต่างใหม่จะปรากฏบนเดสก์ท็อปของคุณดัชนี

หากคุณคลิกปุ่ม Casdoor Login หน้าต่างเข้าสู่ระบบจะปรากฏบนเดสก์ท็อปของคุณ เข้าสู่ระบบ

หลังจากเข้าสู่ระบบสำเร็จ หน้าต่างโปรไฟล์ผู้ใช้จะปรากฏบนเดสก์ท็อปของคุณ แสดงชื่อผู้ใช้ของคุณโปรไฟล์ผู้ใช้

คุณสามารถดูตัวอย่างกระบวนการทั้งหมดในภาพ GIF ด้านล่างตัวอย่าง 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();

การใช้ Auth Code เพื่อรับข้อมูลผู้ใช้

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