Skip to main content

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。

<dependency>
<groupId>org.casbin</groupId>
<artifactId>casdoor-java-sdk</artifactId>
<version>1.x.y</version>
</dependency>

步骤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 文件进行以下嵌入。

casdoor.endpoint = http://localhost:8000
casdoor.clientId = 874e3e05e58d50148c65
casdoor.clientSecret = 41510b84c7267ad2e4d2b51096b7f11dc9c5fdc8
casdoor.jwtSecret = CasdoorSecret
casdoor.organizationName = built-in
casdoor.applicationName = 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), 将用户写入数据库。