Spring Boot
casdoor-spring-boot-example是一个如何在Spring Boot项目中使用casdoor-spring-boot-starter的示例。 我们将引导您完成以下步骤。
步骤1:部署Casdoor
首先,应部署Casdoor。
您可以参考 服务安装 的 Casdoor 官方文档。 请在 生产模式 中部署您的 castor 实例。
部署成功后,请确保以下内容:
- 打开你最喜欢的浏览器,访问 http://localhost:8000。 您将看到Casdoor的登录页面。
- 通过输入
admin
作为用户名和123
作为密码来测试登录功能。
现在,您可以按照以下步骤在您自己的应用中快速实现基于Casdoor的登录页面。
步骤2:导入casdoor-spring-boot-starter
您可以使用Maven或Gradle导入casdoor-spring-boot-starter。
- Maven
- Gradle
<!-- https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter -->
<dependency>
<groupId>org.casbin</groupId>
<artifactId>casdoor-spring-boot-starter</artifactId>
<version>1.x.y</version>
</dependency>
// https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter
implementation group: 'org.casbin', name: 'casdoor-spring-boot-starter', version: '1.x.y'
步骤3:初始化配置
初始化需要按以下顺序的6个字符串类型参数:
| 名称 | 必需的 | 描述 |
| ---------------- | --- | ------------------------------------------ |
| endpoint | 是 | Casdoor 服务器 URL,例如 http://localhost:8000
|
| clientId | 是 | 应用程序客户端ID |
| clientSecret | 是 | 应用程序客户端密钥 |
| certificate | 是 | 应用程序证书 |
| organizationName | 是 | 应用程序组织 |
| applicationName | 否 | 应用程序名称 |
您可以使用Java属性或YAML文件进行初始化。
- Properties
- YML
casdoor.endpoint = http://localhost:8000
casdoor.clientId = <client-id>
casdoor.clientSecret = <client-secret>
casdoor.certificate = <certificate>
casdoor.organizationName = built-in
casdoor.applicationName = app-built-in
casdoor:
endpoint: http://localhost:8000
client-id: <client-id>
client-secret: <client-secret>
certificate: <certificate>
organization-name: built-in
application-name: app-built-in
将配置值替换为您自己的Casdoor实例,特别是clientId
,clientSecret
和jwtPublicKey
。
步骤4:重定向到登录页面
当你需要验证访问你的应用的用户时,你可以发送目标URL并重定向到Casdoor提供的登录页面。 请确保您已经在应用程序配置中添加了回调URL(例如,http://localhost:8080/login)。
@Resource
private CasdoorAuthService casdoorAuthService;
@RequestMapping("toLogin")
public String toLogin() {
return "redirect:" + casdoorAuthService.getSigninUrl("http://localhost:8080/login");
}
步骤5:获取令牌并解析
在通过Casdoor验证后,它将带着代码和状态重定向回您的应用程序。
您可以获取代码并调用getOAuthToken
方法,然后解析JWT令牌。
Casdoor User
包含了由Casdoor提供的有关用户的基本信息。 您可以使用它来设置应用程序中的会话。
@RequestMapping("login")
public String login(String code, String state, HttpServletRequest request) {
String token = "";
CasdoorUser user = null;
try {
token = casdoorAuthService.getOAuthToken(code, state);
user = casdoorAuthService.parseJwtToken(token);
} catch (CasdoorAuthException e) {
e.printStackTrace();
}
HttpSession session = request.getSession();
session.setAttribute("casdoorUser", user);
return "redirect:/";
}
服务
以下是API的示例:
- CasdoorAuthService
String token = casdoorAuthService.getOAuthToken(code, "app-built-in");
CasdoorUser casdoorUser = casdoorAuthService.parseJwtToken(token);
- CasdoorUserService
CasdoorUser casdoorUser = casdoorUserService.getUser("admin");
CasdoorUser casdoorUser = casdoorUserService.getUserByEmail("admin@example.com");
CasdoorUser[] casdoorUsers = casdoorUserService.getUsers();
CasdoorUser[] casdoorUsers = casdoorUserService.getSortedUsers("created_time", 5);
int count = casdoorUserService.getUserCount("0");
CasdoorResponse response = casdoorUserService.addUser(user);
CasdoorResponse response = casdoorUserService.updateUser(user);
CasdoorResponse response = casdoorUserService.deleteUser(user);
- CasdoorEmailService
CasdoorResponse response = casdoorEmailService.sendEmail(title, content, sender, receiver);
- CasdoorSmsService
CasdoorResponse response = casdoorSmsService.sendSms(randomCode(), receiver);
- CasdoorResourceService
CasdoorResponse response = casdoorResourceService.uploadResource(user, tag, parent, fullFilePath, file);
CasdoorResponse response = casdoorResourceService.deleteResource(file.getName());
更多资源
您可以探索以下项目/文档,以了解更多关于将Java与Casdoor集成的信息: