1. 程式人生 > >單點登入ajax傳送jsonp請求

單點登入ajax傳送jsonp請求

jquery

<script type="text/javascript">
        $(function () {
            var ticket = $.cookie("DN_TICKET");
            $.ajax({
                type:"post",
                url:"http://sso.ajstore.com/checkLoginJsonP.html",
                dataType:"jsonp",
                jsonp:"callback"
, success:function(result){ var user = result.data; console.log(result); if (result.status === 200) { $("#iul").append('<li><a href="/lookforward.html">'+user.username+'</a><b>|</b></li><li><a href="javascript:;" onclick="logout()">退出</a></li>'
); }else if(result.status === 500){ $("#iul").append('<li><a href="http://sso.ajstore.com/toLogin.html">登入</a></li>'); } }, error:function(textStatus,XMLHttpRequest){ alert("系統異常!"
+JSON.stringify(textStatus)+" ------ "+XMLHttpRequest); } }); })
</script>

伺服器端

@RequestMapping("/checkLoginJsonp")
    @ResponseBody
    public void checkLoginJsonp(HttpServletRequest request, HttpServletResponse response, String callbackFunctionName) throws IOException{
        PrintWriter out = response.getWriter();
        //獲取ticket
        String ticket=CookieUtils.getCookieValue(request, "AJSTORE-TICKET");
        if(ticket==null){
            AjiaResult result = AjiaResult.build(500, "未登入");
            String returnStr = callbackFunctionName+"("+JsonUtils.objectToJson(result)+")";
            out.write(returnStr);
            out.close();
            return;
        }
        //取redis中尋找使用者
        Jedis jedis = jedisUtils.getJedis();
        String userJson = jedis.hget(ticket, "SESSION_USER");
        if(userJson==null){
            AjiaResult result = AjiaResult.build(500, "未登入");
            String returnStr = callbackFunctionName+"("+JsonUtils.objectToJson(result)+")";
            out.write(returnStr);
            out.close();
            return;
        }
        //又需要用到這個使用者,我們需要把redis中該ticket的生存時間重置為30分鐘
        jedisUtils.expire(ticket);
        AjiaUser user = JsonUtils.jsonToPojo(userJson, AjiaUser.class);
        AjiaResult result = AjiaResult.ok(user);
        String returnStr = callbackFunctionName+"("+JsonUtils.objectToJson(result)+")";
        out.write(returnStr);
        out.close();
    }