单点登录ajax发送jsonp请求

版权声明:内容记录学习过成文章,仅供参考 https://blog.csdn.net/qq_40195958/article/details/82496832

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();
    }

猜你喜欢

转载自blog.csdn.net/qq_40195958/article/details/82496832