单点登录实现Ajax登录

来源:互联网 发布:查看本机mac地址 编辑:程序博客网 时间:2024/06/04 19:49
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>Custom Login Page</title>    <script type="text/javascript" src="js/lib/jquery.js"></script></head><body><div>Custom Login Page</div><div>    username:<input id="username" name="username" value="nick"/>    password:<input type="password" id="password" name="password" value=""/>    <input type="button" id="login_btn" value="Login" name="Login"/>    <div id="cas_error_msg" style="display: block;"></div>    <div id="cas_error" style="display: none;"></div>    <div id="cas_tgt" style="display: none;"></div>    <div id="cas_st" style="display: none"></div></div><script type="text/javascript">    $(document).ready(function(){        //get redirect url after login        var curURL = window.location.href;        var curService = "";        if(curURL.indexOf('?') > 0){            curService = curURL.substring(curURL.indexOf('?') + 9);        }        //get Ticket Granting Ticket        $("#login_btn").click(function(){            var username = $("#username").val();            var password = $("#password").val();            $.ajax({                url: "v1/tickets",                dataType: "text",                type: "POST",                data: "username="+username+"&password="+password+"",                contentType: "application/x-www-form-urlencoded",                success:function(data){                    $("#cas_tgt").html(data);                    $("form input:first").val(curService);                    $("form input:first").html(curService);                    var action = $("form").attr("action");                    var service = $("form input:first").val();                    var data = "";                    if(service != ""){                        data = "service="+service+"";                    }                    //get Service Ticket                    $.ajax({                        url: action,                        dataType: "text",                        type: "POST",                        data: data,                        contentType: "application/x-www-form-urlencoded",                        success:function(data){                            $("#cas_st").val(data);                            $("#cas_st").html(data);                            //redirect to original url                            var locationURL = $("form input:first").val() + "?ticket=" + $("#cas_st").val();                            //console.log(locationURL);                            window.location = locationURL                        },                        error: function(data){                            console.log(data.responseText);                        }                    });                },                error: function(data){                    console.log(data.responseText);                    $("#cas_error").val(data.responseText);                    $("#cas_error").html(data.responseText);                    if("error.authentication.credentials.bad" == $("h3").text()){                        $("#cas_error_msg").html("您提供的凭证有误");                    }else if("error.authentication.credentials.bad.locked" == $("h3").text()){                        $("#cas_error_msg").html("尝试次数太多,帐号被暂停使用,请联系管理员");                    }else if("error.authentication.credentials.bad.change.pwd" == $("h3").text()){                        $("#cas_error_msg").html("请先修改初始密码,然后再登录");                    }else if("error.authentication.credentials.bad.invalid" == $("h3").text()){                        $("#cas_error_msg").html("帐户不存在,或者帐户被禁用");                    }else if("error.authentication.credentials.bad.sms" == $("h3").text()){                        $("#cas_error_msg").html("您提供的手机验证码有误");                    }else if("error.authentication.credentials.bad.multi.login" == $("h3").text()){                        $("#cas_error_msg").html("您尝试太频繁,请休息五分钟后重试");                    }else if("error.authentication.credentials.bad.pwd.risk" == $("h3").text()){                        $("#cas_error_msg").html("您的密码存在风险,请修改密码后再登陆");                    }else if("error.authentication.credentials.unsupported" == $("h3").text()){                        $("#cas_error_msg").html("CAS不支持您提供的凭证");                    }else{                        $("#cas_error_msg").html("您提供的凭证有误!");                    }                }            });        });    });</script></body></html>


备注:

cas-server-3.5.2系统需要集成下面的jar包:

cas-server-integration-restlet-3.5.2.jar

com.noelios.restlet.ext.servlet-1.1.10.jar

com.noelios.restlet.ext.spring-1.1.10.jar

com.noelios.restlet-1.1.10.jar

org.restlet.ext.spring-1.1.10.jar

org.resetlet-1.0.jar

登录过程:

根据用户名、密码首先获取TGT(Ticket Granting Ticket);

然后根据返回的TGT获取ST(Service Ticket);

根据获取的ST登录需要访问的系统,系统url?ticket=ST。




0 0
原创粉丝点击