Spring Boot

casdoor-spring-boot示例 是如何在SpringBoot项目中使用 casdoor-java-sdk 我们将向您展示以下步骤。

步骤1。 部署Casdoor

第一,应部先部署Casdoor。

您可以参考 服务安装 的 Casdoor 官方文档。

在成功部署后,您需要确保:

  • Casdoor服务已经成功运行在 http://localhost:8000 上了。
  • 打开您最喜欢的浏览器并访问 http://localhost:7001,您将看到Casdoor的登录页面。
  • 输入 admin and 123 测试登录功能正常工作。

然后您可以通过以下步骤在自己的应用程序中快速实现基于Casdoor的登录页面。

第2步: 导入casdoor-java-sdk

您可以用maven或grade导入casdo-java-sdk。

  • Maven
  • Gradle
  1. <dependency>
  2. <groupId>org.casbin</groupId>
  3. <artifactId>casdoor-java-sdk</artifactId>
  4. <version>1.x.y</version>
  5. </dependency>
  1. implementation 'org.casbin:casdoor-java-sdk:1.x.y'

步骤3. Init 配置

初始化需要6个参数,它们都是字符串类型。 | 姓名(按顺序排列) | 必选项 | 描述 | | ———————— | —- | ————————————————————- | | endpoint | 确定 | Casdoor 服务URL, 例如 http://localhost:8000 | | clientId | 确定 | Application.client_id | | clientSecret | 确定 | Application.client_secret | | jwtSecret | 确定 | 与 Casdoor JWT 密钥相同。 | | organizationName | 确定 | Application.organization | | applicationName | 确定 | Application.name | 您可以使用 Java 属性或 YAML 文件进行以下嵌入。

  • Properties
  • YML
  1. casdoor.endpoint = http://localhost:8000
  2. casdoor.clientId = 874e3e05e58d50148c65
  3. casdoor.clientSecret = 41510b84c7267ad2e4d2b51096b7f11dc9c5fdc8
  4. casdoor.jwtSecret = CasdoorSecret
  5. casdoor.organizationName = built-in
  6. casdoor.applicationName = app-built-in
  1. casdoor:
  2. endpoint: http://localhost:8000
  3. client-id: 874e3e05e58d50148c65
  4. client-secret: 41510b84c7267ad2e4d2b51096b7f11dc9c5fdc8
  5. jwt-secret: CasdoorSecret
  6. organization-name: built-in
  7. application-name: app-built-in

:::注意事项 您应该用您自己的 Casdoor 实例替换配置,特别是 clientId and clientsecretret。 ::: 然后创建 CasdoorSdkProperties 类,声明与配置对应的成员变量,并提供getter 和 setter。

  1. @Data
  2. @Component
  3. @ConfigurationProperties(prefix = "casdoor")
  4. public categories CasdoorSdkProperties 然后
  5. private String endpoint;
  6. 个私有字符串客户端Id
  7. 私有字符串客户端;
  8. 私有字符串jwtSecret
  9. 私有字符串组织名称;
  10. 私有字符串应用程序名称;
  11. }

创建 CasdoorSdkConfig 类,init CasdoorConfig 与 CasdoorSdkProperties 的实例。

  1. @Configuration
  2. 公共级CasdoorSdkConfig @un.org
  3. @Resource
  4. private CasdoorSdkProperties casdoorSdkProperties;
  5. @Bean
  6. public Casdoor ConfiggetCasdoorConfig() v.
  7. return new CasdoorConfig(
  8. casdoorSdkProperties. etEndpoint(),
  9. casdoorSdkProperties. etClientId(),
  10. casdoorSdkProperties. etClientSecret(),
  11. casdoorSdkProperties. etJwtSecret(),
  12. casdoorSdkProperties. etOrganization名称(),
  13. casdoorSdkProperties. etApplicationName()
  14. );
  15. }
  16. }

当SpringBoot 应用程序启动时,Java 属性或 YAML 中的配置将自动注入成员变量在 CasdoorSdkProperties 类中。

所以您可以在 Casdoor SdkConfig 类中使用 getCasdoorConfig 方法获取 CasdoorConfig 实例在任何地方。

第4步: 重定向到登录页面

当您需要访问您的应用的身份验证时,您可以发送目标URL并重定向到Cassdoor提供的登录页面。

请确保您已经在应用程序配置中预先添加回调url (例如 http://localhost:8080/logn)。

  1. @RequestMapping("toLogin")
  2. public String toLogin() v.
  3. Casdoorium casdoor Config = casdoorSdkConfig.getCasdoorConfig();
  4. String targetUrl = String. ormat("%s/login/oauth/authority? lient_id=%s&response_type=code&redirect_uri=%s&scope=read&state=%s",
  5. "http://localhost:7001", casdoorConfig"。 etClientId(),
  6. "http://localhost:8080/login", casdoorConfig. etApplicationName());
  7. return "redirect:" + targetUrl;
  8. }

第5步: 获取令牌并解析

Cassdoor 验证通过后,它将被重定向到您的应用程序中使用代码和状态。

您可以获取代码并调用 getOAuthtoken 方法,然后解析jwt token。

CasdoorUser 包含了由Casdoor提供的关于用户的基本信息。 您可以使用它作为关键词在您的应用程序中设置会话。

  1. @RequestMapping("login")
  2. 公开字符串登录(String code, String state, HttpServletRequest Request) }
  3. CasdoorAuthservice casdoorAuthService = new CasdoorAuthService(assdoorSdkConfig)。 etCasdoorConfig());
  4. String token = "";
  5. CasdoorUser = null;
  6. 试试。
  7. token = casdoorAuthServices etOAuthToken(代码, state);
  8. user = casdoorAuthService. arseJwtToken(token);
  9. } 捕获(OAuthSystemException | OAuthProblemException | ParseException | InvocationTargetException | IllegalAccessException e) v.
  10. e. rintStackTrace();
  11. }
  12. HttpSession = request.getSession();
  13. session. etAttribute("casdoorUser", 用户);
  14. return "redirect:/";
  15. }

第6步: 用户服务

CasdoorUserService 支持基本用户操作,比如:

  • GetUser(名字字符串), 通过用户名获得一个用户。
  • GetUsers(), 获取所有用户。
  • UpdateUser(auth.User)/AddUser(auth.User)/DeleteUser(auth.User), 将用户写入数据库。