Spring Boot
casdoor-spring-boot示例 是如何在SpringBoot项目中使用 casdoor-java-sdk 我们将向您展示以下步骤。
步骤1。 部署Casdoor
第一,应部先部署Casdoor。
您可以参考 服务安装 的 Casdoor 官方文档。
在成功部署后,您需要确保:
- Casdoor服务已经成功运行在 http://localhost:8000 上了。
- 打开您最喜欢的浏览器并访问 http://localhost:7001,您将看到Casdoor的登录页面。
- 输入
admin
and123
测试登录功能正常工作。
然后您可以通过以下步骤在自己的应用程序中快速实现基于Casdoor的登录页面。
第2步: 导入casdoor-java-sdk
您可以用maven或grade导入casdo-java-sdk。
- Maven
- Gradle
<dependency>
<groupId>org.casbin</groupId>
<artifactId>casdoor-java-sdk</artifactId>
<version>1.x.y</version>
</dependency>
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
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)
, 将用户写入数据库。