前后端分離中使用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));
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM