文档章节

开发单点登录时对 Cookie的重新认识

凡凡
 凡凡
发布于 2016/05/08 10:43
字数 574
阅读 7
收藏 0

单点登录的解释取自百度百科为:

     单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    使用方式和实现方案分为 子域、全域、http-https等形式。 今天来聊一下关于Cookie的写入与清除问题。

结论为:写入Cookie时配置的属性,在进行删除的时候,必须带有相同的属性,方可Remove掉!!!


为了满足测试进行配置host信息

127.0.0.1    www.a.com

127.0.0.1    sub.a.com

127.0.0.1   itest.sub.a.com


Cookie的写入:

Cookie的写入,特别注意属性[path、domain]的配置。

@RequestMapping(value = "/add", method = RequestMethod.GET)
public void addCookie(DiyResponse diyResponse,HttpServletRequest req,HttpServletResponse response) {
    
    Cookie cookie = new Cookie("main_abc1","test value");
    #path 属性如果不设置,便直接指定为当前Uri的地址,建议明确,删除时同时需要的,不然删除不了
    cookie.setPath("/");
    #请注意,如果配置此属性,Remove时也必须进行指定,不然是删除不了
    cookie.setDomain(".a.com");
    response.addCookie(cookie);

    try {
        response.getWriter().println("add success");
    } catch (IOException e) {
        e.printStackTrace();
    }
}


Cookie的删除:

在Cookie删除时,一定需要明确,之前是怎么写入的,是否配置path、domain这些属性!!如果是只单维度控制path或domainCookie是清除不掉的。

下面示例便是失败的。需要指定写入机同属性方可。


 失败Demo:

@RequestMapping(value = "/clear", method = RequestMethod.GET)
public void removeCookie(HttpServletRequest req,HttpServletResponse response) {

    Cookie[] cookies =  req.getCookies();
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        // 找到需要删除的Cookie
        if (name.compareTo("main_abc1") == 0) {
            // 设置生存期为0
            cookie.setMaxAge(0);             
            cookie.setPath("/");
            // 设回Response中生效
            response.addCookie(cookie);
        }
    }
    try {
        response.getWriter().println("删除完成");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

成功示例:

@RequestMapping(value = "/clear", method = RequestMethod.GET)
public void removeCookie(HttpServletRequest req,HttpServletResponse response) {

    Cookie[] cookies =  req.getCookies();
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        // 找到需要删除的Cookie
        if (name.compareTo("main_abc1") == 0) {
            // 设置生存期为0
            cookie.setMaxAge(0);   
            //明确指定Cookie Path           
            cookie.setPath("/");
            //删除指定的domainCookie            
            cookie.setDomain(".a.com");
            
            // 设回Response中生效
            response.addCookie(cookie);
        }
    }
    try {
        response.getWriter().println("删除完成");
    } catch (IOException e) {
        e.printStackTrace();
    }
}


 由于在做单点登录的时候,纠正了许多认证行的通的常识知识,在些记录一下,纠正问题,拾起基础知识。



© 著作权归作者所有

共有 人打赏支持
凡凡
粉丝 0
博文 1
码字总数 574
作品 0
静安
高级程序员
私信 提问
单点登陆实战,重新认识session

前言: 首先介绍下项目背景,我经手的项目呢,是一个音乐网站,看上去是一个网站,实际上是三个项目,首先是一个基于onethink开发的音乐分享平台,第二个是基于客客族的一个众包类型的平台,第三个是...

勃起狂奔者
2017/10/21
0
0
基于 Web 的单点登录理论研究之跨域和票据设计

最近好多朋友问我关于 SSO 的问题,其实市面上有很多成型的产品,SSO 理论本身也提了好多年了,下面是我以前写的一篇文章《基于 Web 的单点登录理论研究》里的一部分关于跨域和票据设计问题,...

青夜之衫
2017/12/08
0
0
基于 Web 的单点登录理论研究之跨域和票据设计

最近好多朋友问我关于 SSO 的问题,其实市面上有很多成型的产品,SSO 理论本身也提了好多年了,下面是我以前写的一篇文章《基于 Web 的单点登录理论研究》里的一部分关于跨域和票据设计问题,...

唐玄奘
2017/12/04
0
0
单点登录(SSO)看这一篇就够了

背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。 但随着企业的发展,用到的系统随之增多,运营人员在操作...

小忽悠
2018/09/06
0
0
SSO 单点登录总结(PHP)

本篇文章根据个人理解的知识整理汇总,如有不足之处,请大家多多指正。 单点登录(SSO——Single Sign On)的应用是很普遍的,尤其在大型网站系统中,比如百度,登录百度账号和,再转到百度经...

飞逸逸飞
2018/09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据处理也要安全--关于MaxCompute的安全科普

摘要: 企业从未像今天这样可以轻易地存储和使用大数据。然而,当您在使用大数据产品时,是否考虑过其中的安全问题呢?庆幸的是,阿里云产品专家和安全专家早就想你所想急你所急,先行一步将...

阿里云云栖社区
19分钟前
1
0
vue如何编写组件可以通过Vue.use()使用

一般平时用别人的组件时都是通过import引入然后Vue.use()来使用,那么如何让我们写的组件也可以用这种方式使用呢? 1.首先新建一个文件夹例如:Home,然后在该文件中新建两个文件Home.vue和i...

北辰丨丶
19分钟前
2
0
SpringBoot自动配置原理

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面Spring的文章(以学习的顺序排好): Spring入门这一篇就够了 Spring【依赖注...

Java3y
24分钟前
1
0
如何伪装成一个服务端开发(十) -- Spring MVC 源码

前言 在第七篇我们已经聊过了一些Spring MVC的运行原理,当然大多数人应该还是和我一样迷迷糊糊,只知道一个大概的运行过程,这一篇,我想要从源码的角度更加进一步去了解Spring MVC的整个运...

街角的小丑
28分钟前
1
0
应用前台耗电怎么破?功耗避雷指南已“佩奇”

使用应用时被用户吐槽手机掉电快、卡顿、过度发热,导致用户体验差,以上情况的产生,应用的功耗设计不足是直接症结。 当前,人们对性能体验的追求前所未有,应用设计功能越来越强大,界面也...

安卓绿色联盟
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部