Spring Boot
casdoor-spring-boot-example 是关于如何在 SpringBoot 项目中使用 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 | 是 | Application.client_id |
| clientSecret | 是 | Application.client_secret |
| certificate | Yes | Application.certificate |
| organizationName | 是 | Application.organization |
| applicationName | 否 | Application.name |
您可以使用 Java properties 或 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 验证通过后,它将被重定向到您的应用程序,并带有 code 和状态。
您可以获取 code 并调用 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:/";
}
Service
这两种情况的示例如下所示:
- 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一体化的信息。