后端开发
- 基础概念
- 功能使用
- 认证授权
前端开发
PIG 整合 JFinal 单点登录
环境说明
- pig 2.10
- jpress 3.0
代码新增
_AdminController 新增 SSO 端点
授权码模式下回调地址不能使用 localhost
,可以使用 127.0.0.1
@Clear(PermissionInterceptor.class)
public void sso(String code) {
if (StrUtil.isBlank(code)) {
String url = String.format("%s?response_type=code&scope=%s&client_id=%s&state=%s&redirect_uri=%s",
"http://192.168.0.33:3000/oauth/authorize",
"server",
"jfinal",
"jfinal",
URLEncoder.encode("http://127.0.0.1:8080/admin/sso"));
redirect(url);
return;
}
String template = "http://192.168.0.33:3000/oauth/token?grant_type=authorization_code&scope=%s&code=%s&redirect_uri=%s";
final String url = String.format(template, "server", code, URLEncoder.encode("http://127.0.0.1:8080/admin/sso"));
String body = HttpRequest.get(url)
.basicAuth("jfinal", "jfinal")
.execute()
.body();
JSONObject parse = JSONUtil.parseObj(body);
String username = parse.getStr("username");
//登录并创建 token
User user = userService.findFistByUsername(username);
Ret ret = Ret.ok().set("user_id", user.getId());
if (ret.isOk()) {
SessionUtils.record(user.getId());
CookieUtil.put(this, JPressConsts.COOKIE_UID, user.getId());
}
redirect("/admin");
}
AdminInterceptor 配置
AdminInterceptor 配置
需要暴露 SSO 端点,配置示例如下:
前端使用
访问地址:
http://127.0.0.1:8080/admin/sso
退出功能
♥️ 获取支持
遇到问题?
如果您在使用过程中遇到任何问题、有功能建议或需求,请点击此卡片前往 Gitee 仓库提交 Issue。
Assistant
Responses are generated using AI and may contain mistakes.