java读取xml格式的文件,对接cas统一身份认证

文章描述了一个通过获取ticket并解析后,进行用户登录的过程,包括使用HTTPUtil发送GET请求、XML解析用户信息、生成JWTtoken和zbpToken,并设置相关Cookie。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、拿到ticket
2、解析

public String login(String ticket, String redirectUri) {
        // 组装GET请求的参数
        Map<String, Object> param = new HashMap<>(2);
        param.put("ticket", ticket);
        param.put("service", redirectPrefix + "?redirectUri=sdnu-consume-bill-web");
        String result = HttpUtil.get(getUserInfoPrefix, param, 2000);
        System.out.println(result);
        Document xml = XmlUtil.parseXml(result);

        String userNo = null;
        String userName = null;
        String unitNo = null;

        try {
            userNo = xml.getElementsByTagName("cas:user").item(0).getTextContent();
            userName = xml.getElementsByTagName("cas:cn").item(0).getTextContent();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        //生成老版token
        Map<String, Object> cookieMap = new HashMap<>(4);
        cookieMap.put(JwtUtil.KEY_USER_NO, userNo);
        cookieMap.put(JwtUtil.KEY_USER_NAME, userName);
        // TODO 去表里查
        cookieMap.put(JwtUtil.KEY_UNIT_NO, unitNo);
        String token = JwtUtil.generateToken(cookieMap);
        //生成zbpToken
        JwtUserInfo userInfo = new JwtUserInfo();
        userInfo.setUserId(userNo);
        userInfo.setName(userName);
        userInfo.setUnitNo(unitNo);
        userInfo.setTokenType(JwtUserInfo.TokenType.ADMIN);
        AuthorInfo authorInfo = tokenUtil.createAuthInfo(userInfo, null);
        String zbpToken = authorInfo.getToken();

        return String.format("<!DOCTYPE html>\n" +
                "<html lang='en'>\n" +
                "<head>\n" +
                "  <meta charset='UTF-8'>\n" +
                "  <title>正在登录</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "  正在登录...\n" +
                "  <script>\n" +
                "    document.cookie = 'token=%s; path=/';\n" +
                "    document.cookie = 'userNo=%s; path=/';\n" +
                "    document.cookie = 'userName=%s; path=/';\n" +
                "    document.cookie = 'username=%s; path=/';\n" +
                // zbpToken相关
                "    document.cookie = 'zbpToken=%s; path=/';\n" +
                "    const url = sessionStorage.getItem('url');\n" +
                "    setTimeout(function(){\n" +
                "       if(url){" +
                "           window.location.href = url;\n" +
                "       }else{" +
                "           window.location.href = '%s';\n" +
                "       }\n" +
                "   },150);\n" +
                "  </script>\n" +
                "</body>\n" +
                "\n" +
                "</html>", token, userNo, userName, userName, zbpToken, redirectPrefix + redirectUri);
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值