4个稳定版本
1.5.0 | 2022年7月4日 |
---|---|
1.4.0 | 2022年7月4日 |
1.3.0 | 2022年7月4日 |
1.0.0 | 2022年7月4日 |
在身份验证中排名第645
24KB
354 行
casdoor-rust-sdk
这是Casdoor的Rust SDK,它将允许您轻松地将应用程序连接到Casdoor身份验证系统,而无需从头实现。
Casdoor SDK使用非常简单。以下我们将展示步骤。
[dependencies]
casdoor-rust-sdk = "0.1"
//in your app
[macro_use]
extern crate casdoor_rust_sdk_release_test;
步骤1. 初始化SDK
初始化需要6个参数,都是字符串类型
名称(顺序) | 必须 | 描述 |
---|---|---|
端点 | 是 | Casdoor服务器Url,例如 https://127.0.0.1:8000 |
client_id | 是 | Application.client_id |
client_secret | 是 | Application.client_secret |
证书 | 是 | 与您的Application证书相同 |
org_name | 是 | Application.organization |
front_endpoint | 否 | Casdoor网络端点,默认为endpoint.replace(":8000", ":7001") |
//anything implemented "ToString" trait can be used by this macro
let app = newsdk!(endpoint, client_id, client_secret, certificate, org_name);
步骤2. 获取令牌并解析
通过Casdoor验证后,它将带有代码和状态重定向到您的应用程序,如下所示:http://forum.casbin.org?code=xxx&state=yyyy
。
您的Web应用程序可以获取code
、state
并调用GetOAuthToken(code, state)
,然后解析出jwt令牌。提示
-
redirect_uri
是您的应用程序配置为监听来自Casdoor
响应的URL。例如,如果您的redirect_uri
是https://forum.casbin.com/callback
,那么Casdoor将向此URL发送请求,并带有两个参数code
和state
,这些参数将在后续步骤中进行身份验证。 -
state
通常是应用程序的名称,您可以在Casdoor
中的Applications
选项卡下找到它,最左边的Name
列给出了每个应用程序的名称。 -
当然,您希望应用程序能够发送URL。例如,您应该有一个按钮,它携带这个URL。因此,当您点击该按钮时,您应该被重定向到
Casdoor
进行验证。目前,您只是在浏览器中输入它以进行测试。 -
所有函数都将返回
Result<_, Box<dyn std::error::Error>>
,因为有多种可能的错误。
一般过程如下
//config will generate a NetWorkConfig struct, default response type is "code", and default scope is "read"
let config = &networkconfig!(callback, state)
let link = app.get_auth_link(&config)?;
//and the code will be sent to callback address
let code = (your method to get code);
let access_token = app.get_oauth_token(&code)?;
//the claims returns a HashMap<String, String>
let claims = parse_jwt_token(access_token)?;
步骤3. 与用户交互
SDK 支持基本用户操作,如
get_user_by_name(name)
,根据用户名获取一个用户。get_users()
,获取所有用户。add_user(User)
,将用户写入数据库。update_user(User)
,更新用户信息delete_user(User)
,删除用户
依赖项
~16–30MB
~569K SLoC