zoukankan      html  css  js  c++  java
  • 前后端分离中使用CAS认证

    跨域问题

    CAS登录过程
    Browser -> CAS -> Browser(ticket) -> BackEnd(验证ticket) -> Browser
    前后端分离中,后端返回302让浏览器跳转到CAS认证中心时因为ajax跨域被阻止,这里提供一种解决思路。
    在前端检测登录状态,未登录则直接(带着service)跳转到CAS认证中心。登录后认证中心会让浏览器跳转会service中的路径,前端取service和ticket发给后端,
    后端手动验证ticket是否有效,请求地址如下(Get请求)。成功则会返回一个包含用户信息的xml,可以直接用regex筛选,未找到即为验证失败。

    String validateUrl = serverUrlPrefix + "p3/serviceValidate?ticket=" + ticket
                         + "&service=" + URLEncoder.encode(service, "UTF-8");
    
    //正则表达式提取字符串
    public static void pickByRegex() {
        String line = "<cas:user>admin</cas:user>";
        String regex = "<cas:user>(.*)</cas:user>";
        Matcher matcher = Pattern.compile(regex).matcher(line);
        if (matcher.find()) {
            System.out.println(matcher.group(0));
            //提取出的值
            System.out.println(matcher.group(1));
        }
    }
    

    如有错漏,欢迎指正!谢绝转载。
  • 相关阅读:
    InPut 标签 HTML(表单)
    JavaScript Table 对象
    JCBD
    JCBD
    JavaScript prototype 属性
    Java8 新特性
    JavaScript 对象的使用
    Java 反射
    虚拟机VirtualBox启动虚拟机报Only Ethernet Adapter' (VERR_INTNET_FLT_IF_NOT_FOUND).
    Impala 数值函数
  • 原文地址:https://www.cnblogs.com/srczhang/p/15272698.html
Copyright © 2011-2022 走看看