跳到主内容

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。

<!-- 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>

步骤3:初始化配置

初始化需要按以下顺序的6个字符串类型参数: | 名称 | 必需的 | 描述 | | ---------------- | --- | ------------------------------------------ | | endpoint | 是 | Casdoor 服务器 URL,例如 http://localhost:8000 | | clientId | 是 | 应用程序客户端ID | | clientSecret | 是 | 应用程序客户端密钥 | | certificate | 是 | 应用程序证书 | | organizationName | 是 | 应用程序组织 | | applicationName | 否 | 应用程序名称 | 您可以使用Java属性或YAML文件进行初始化。

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实例,特别是clientIdclientSecretjwtPublicKey

步骤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集成的信息: