环境说明

  • 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。