Flutter身份验证与授权管理插件casdoor_flutter_sdk的使用
Flutter身份验证与授权管理插件 casdoor_flutter_sdk
的使用
概述
casdoor_flutter_sdk
是一个用于将基于Flutter的应用程序连接到Casdoor认证系统的插件。它支持多种平台,包括Android、iOS、Linux、macOS、Web和Windows。
特性
- 连接到Casdoor进行单点登录(SSO)
- 获取Casdoor认证后的令牌
使用指南
初始化配置
初始化需要6个参数,这些参数都是字符串类型:
名称(按顺序) | 是否必须 | 描述 |
---|---|---|
clientId | 是 | 应用程序的client_id |
endpoint | 是 | Casdoor服务器URL,例如 door.casdoor.com |
organizationName | 是 | 组织名称 |
appName | 是 | 应用名称 |
redirectUri | 是 | 重定向URI |
callbackUrlScheme | 是 | URL Scheme |
final CasdoorFlutterSdkConfig _config = CasdoorFlutterSdkConfig(
clientId: "014ae4bd048734ca2dea",
endpoint: "door.casdoor.com",
organizationName: "casbin",
appName: "app-casnode",
redirectUri: "http://localhost:9000/callback",
callbackUrlScheme: "casdoor"
);
判断平台
根据不同平台设置回调URI:
final platform = await CasdoorFlutterSdkPlatform.getPlatformVersion();
String callbackUri;
if (platform == "web") {
callbackUri = "${_config.redirectUri}.html";
} else {
callbackUri = "${_config.callbackUrlScheme}://callback";
}
授权
通过以下步骤与Casdoor服务器进行授权:
- 向Casdoor发送请求。
- 在浏览器中输入URL:
endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
- 填写相应的参数并执行。
获取令牌并解析
在成功通过Casdoor验证后,应用会被重定向到类似 https://localhost:9000/callback?code=xxx&state=yyyy
的URL。你的应用程序可以获取这个code
并通过 _casdoor.requestOauthAccessToken(code)
来获取JWT令牌。
开始使用
在pubspec.yaml
文件中添加依赖:
dependencies:
casdoor_flutter_sdk: ^1.0.0
平台特定说明
Android 和 iOS
请参考 InAppWebView 文档以了解更多关于项目设置的信息。
Linux 和 macOS
在dependencies
中添加desktop_webview_window: ^0.2.3
包,并修改main
函数如下:
void main(List<String> args) async {
WidgetsFlutterBinding.ensureInitialized();
if (runWebViewTitleBarWidget(args)) {
return;
}
// your code goes here ...
runApp(const MyApp());
}
Web
在项目的./web
文件夹下创建一个HTML文件(如callback.html
),内容如下:
<!DOCTYPE html>
<title>Authentication complete</title>
<p>Authentication is complete. If this does not happen automatically, please close the window.
<script>
window.opener.postMessage({
'casdoor-auth': window.location.href
}, window.location.origin);
window.close();
</script>
确保传递给认证服务的重定向URL与应用程序运行的URL一致(包括schema、host、port等必要信息),并且路径指向创建的HTML文件,例如callbackUri = "${_config.redirectUri}.html"
。
示例代码
下面是一个简单的示例演示如何使用casdoor_flutter_sdk
:
import 'package:flutter/material.dart';
import 'package:casdoor_flutter_sdk/casdoor_flutter_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final CasdoorFlutterSdkConfig config = CasdoorFlutterSdkConfig(
clientId: "your_client_id",
endpoint: "your_casdoor_endpoint",
organizationName: "your_organization_name",
appName: "your_app_name",
redirectUri: "your_redirect_uri",
callbackUrlScheme: "your_callback_url_scheme");
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Casdoor Flutter SDK Example')),
body: Center(
child: ElevatedButton(
onPressed: () async {
try {
String code = await CasdoorFlutterSdk.show(config);
var tokenResponse = await CasdoorFlutterSdk.requestOauthAccessToken(code);
print(tokenResponse.accessToken);
} catch (e) {
print(e.toString());
}
},
child: Text('Login with Casdoor'),
),
),
),
);
}
}
更多关于Flutter身份验证与授权管理插件casdoor_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html