Skip to main content

Spring Boot

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

步骤1。 部署卡斯门

第一,应部署卡斯特门。

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

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

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

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

第2步: 导入casdoor-java-sdk

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

从 '@theme/Tabs'导入标签页; 从'@theme/TabItem'导入标签页;

<dependency>
<groupId>org。 如您的外观</groupId>
<artifactId>casdoor-java-sdk</artifactId>
<version>1。 .y</version>
</dependency>
implement 'org。 asbin:casdoor-java-sdk:1.x.y'

步骤3. Init 配置

初始化需要6个参数,它们都是字符串类型。 | 姓名(按顺序排列) | 必须的 | 描述 | | ------------ | --- | ------------------------------------------ | | endpoint | 否 | Casdoor 服务器URL, 例如 http://localhost:8000 | | clientId | 否 | 客户端ID | | clientSecret | 否 | 请输入用户密码 | | jwtSecret | 否 | 与 Casdoor JWT 密钥相同。 | | 组织名称 | 否 | 应用程序组织 | | 应用程序名称 | 否 | 应用程序名称 | 您可以使用 Java 属性或 YAML 文件进行以下嵌入。

casdoor.endpoint = http://localhost:8000
casdoor.clientId = 874e3e05e58d50148c65
casdoor.clientSecret = 41510b84c7267ad2e4d2b51096b7f11dc9c5fdc8
casdoor.jwtSecret = CasdoorSecret
casdoor.organizationName = built-in
casdoor.applicationName = app-built-in
casdoor:
endpoint: http://localhost:8000
client-id: 874e3e05e58d50148c65
client-secret: 41510b84c7267ad2e4d2b51096b7f11dc9c5fdc8
jwt-secret: CasdoorSecret
organization-name: built-in
application-name: app-built-in

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

@Data
@Component
@ConfigurationProperties(prefix = "casdoor")
public categories CasdoorSdkProperties 然后
private String endpoint;
个私有字符串客户端Id;
私有字符串客户端;
私有字符串jwtSecret;
私有字符串组织名称;
私有字符串应用程序名称;
}

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

@Configuration
公共级CasdoorSdkConfig @un.org

@Resource
private CasdoorSdkProperties casdoorSdkProperties;

@Bean
public Casdoor ConfiggetCasdoorConfig() v.
return new CasdoorConfig(
casdoorSdkProperties. etEndpoint(),
casdoorSdkProperties. etClientId(),
casdoorSdkProperties. etClientSecret(),
casdoorSdkProperties. etJwtSecret(),
casdoorSdkProperties. etOrganization名称(),
casdoorSdkProperties. etApplicationName()
);
}
}

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

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

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

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

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

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

第5步: 获取令牌并解析

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

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

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

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

第6步: 用户服务

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

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