02 创建portal服务,获取存储在redis中用户信息并显示

上一节,我们完成了sso服务,这一节我们再创建一个服务去获取第一个服务存储在redis中的用户信息。

1、前提约束

  • 完成sso服务

2、操作步骤

  • 基于springboot创建一个web项目 portal,端口设置为8082
    https://www.jianshu.com/p/de979f53ad80
    注意:这里仅仅是为了提供一个提供一个页面,之所以也用springboot,纯粹是为了方便,因为两个项目用两个不同的方式实现是比较烦的,况且这也不是此时要我们关注的。
  • 在项目/src/main/resources/static文件夹中引入jquery-1.10.2.js
  • 在项目/src/main/resources/static文件夹中创建index.html



    
    


欢迎你!

Hello World!

  • 在net.wanho.controller.UserController.java文件中加入以下方法:
    @GetMapping("/getuser")
    public JSONObject doGet(HttpServletRequest req) throws Exception {

        JSONObject jsonObject = new JSONObject();
        //也可以采用这方式完成跨域
        //resp.setHeader("Access-Control-Allow-Origin","http://localhost:8082");
        String callback = req.getParameter("callback");
        if(callback!=null&&!"".equals(callback.trim()))
        {
            //携带callback,请求一定是jsonp跨域请求

            //从cookie当中获取token
            String token = "";
            Cookie[] cookies = req.getCookies();
            for(Cookie cookie:cookies)
            {
                if("USER_TOKEN".equals(cookie.getName()))
                {
                    token = cookie.getValue();
                    break;
                }
            }
            if("".equals(token))
            {
                //直接跳转到登录页面
                jsonObject.put("status",303);
                jsonObject.put("data","cookie当中并未携带token");
        return jsonObject;
            }
        }
        Jedis jedis = new Jedis("192.168.100.192",6379);
        String value = jedis.get(token);
        jsonObject.put("status",200);
        jsonObject.put("data",value);
        return jsonObject;
    }
  • 测试
    重新启动两个项目,先访问http://localhost:8081/index.html,点击登录,最终会跳转到http://localhost:8082/index.html,但是该8082的index.html页面会显示出“ali欢迎你”。
    以上两节就是通过redis+cookie完成单点登录的过程,这种方案的关键在于域名相同的情况下,cookie的值会自动全部携带。如果域名不同,比如从taobao.com跨域到tmall.com,以这种方案就无法实现。

你可能感兴趣的:(02 创建portal服务,获取存储在redis中用户信息并显示)