首页 » SEO优化 » php员工告假体系技巧_机房夜话加精篇

php员工告假体系技巧_机房夜话加精篇

duote123 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

在无尘、恒温、恒湿的环境里,这些信息系统的日子过得非常惬意。

他们只须要在白天应对人类的HTTP 要求,及时做出相应, 只要人类一放工, 系统的负载就陡然低落,CPU内存全部都空闲下来。
大家闲来无事, 热热闹闹的机房夜话就开始了。

php员工告假体系技巧_机房夜话加精篇

1第一夜

php员工告假体系技巧_机房夜话加精篇
(图片来自网络侵删)

休假系统是用天下上最好的措辞PHP做的,他向来灵通,本日带来了一个特殊新闻:“ 号外号外, 听说了吗, 人类要搞SSO了。

Python 写的报销系统, C#写的车辆管理系统早就看不惯PHP这种中英殽杂的风格了: “ 别拽了,说中文!

PHP休假系统很不屑: “便是单点登录嘛,难道你们没听说过?”

C# 说: “不便是登录嘛!
人类不是每天登录系统? 你看他们想调度车俩的时候,就得登录我的系统, 输入用户名和密码, 我做验证, 验证通过就建立session, 然后把session id 通过cookie发送给人类的浏览器, 下次人类再访问我的URL的时候, cookie就会发过来, 我就知道他已经登录过了。

C#很得意,向大家炫耀着登录的事理。

“对了,见告你们一个小秘密, 人类这些密码太大略了,不是123456, 便是abcd。

Python附和道: “ 是啊,人类太

“那对付同一个人, 你这里的用户名/密码和小C#那里会一样吗?” PHP说

“这个。


很有可能不一样。

PHP说: “对啊,这便是问题了, 这么多不同的用户名,有的是邮箱地址,有的是手机号,有的是用户名, 我们这里几十个别系,搁谁都记不全啊! 这便是他们为什么要搞单点登录: 在一个地方登录一次, 就可以访问我们这里所有的系统了”

C# 叫道: \"大众 只须要登录一次? 听起来很美好啊 !
让我想想怎么实现, 对了, 登录便是cookie,那我们把cookie共享起来不就可以了? 人类在报销系统那里登录后,再访问我这个车辆管理系统, 把cookie发过来不就行了?\"大众

众人纷纭表示赞许。

PHP 心里再次鄙视了一下C# , 说: “NO , NO , cookie是不能跨域的, a.com 产生的cookie , 浏览器是不会发到b.com去的。

有人在悄悄地google , PHP果真说得不错。

大家赶紧检讨了下自己的域名,有的叫 xxx.vaction.com, 有的叫xxx.hr.com , 看来共享cookie方案不管用。

PHP补充到: “大概人类能把我们统一到一级或二级域名下, 比如 xxx.company.com, 这样cookie可以共享了!
但是我们后端没有session 也弗成啊, 你cookie发过来,我内存中没数据,根本不知道你是否登录过, 怎么验证?”

C#说: “session 也可以共享哦 , 你看我这个别系有两个做事器,共享的是redis中的session, 将来我们这几十个别系都共享同一个redis,想想都让人激动啊!

Python 说: “ 这么多系统, 架构不同,措辞也不同, 共享session太麻烦了吧? ”

C# 发愁地说: “那怎么办? ”

这时候阁下传来了一声大吼: “你们在那里吵吵什么,老子在天生报表,都没法专心干活了!

这是脾气暴躁的COBOL在抱怨了, 千万不要惹这个老家伙,于是大家纷纭噤声, 老诚笃实地睡觉去了。

2第二夜

第二天晚上,COBOL程序终于歇着了, 大家连续谈论。

Python提了一个新点子:“要我说,我们别共享session了, 我们就用cookie, 用户在我这个报销系统这里登录了, 我就在cookie中写个token , 用户访问别的系统,就可以把token 带过去, 那个系统验证一下token ,如果没问题,就认为它已经登录了。

“那token 得加密吧, 要不然谁都可以假造” C#安全意识挺强

“那是自然, 听说过json web token 没有? 我们每个别系在天生token 的时候,都要对数据做个署名,防止别人修改, 下面便是我生产的token , 个中有header 信息和userID, 你看我用Hash算法和密钥生产了一个署名。
这个署名啊也是token数据的一部分, 到时候也会发到你的系统去” Python 说

(打算署名的过程)

(放置到cookie中的token)

C#说: “明白了, 我收到了token ,就用同样的算法再打算署名,然后和你打算的比较, 如果相等,证明他登录过,我可以直接取出userID利用了, 如果不相等, 解释有人修改, 我就关门放狗, 把他暴揍一顿。

Ruby 插嘴说: “这个办法不错,轻量级,我喜好!
只是这个算法和密钥大家都得同等才行。
密钥的分发也是个问题。

PHP听了半天, 创造了一个漏洞:“你这个token中放了一个userID, 可是我们每个别系的userID都不一样啊, 你的userID 我拿过来没有任何用途, 怎么办?”

这的确是个致命的问题!
每个别系中都有一套自己独特的user id ,互不共享,这样以来之前谈论的什么共享session, 共享cookie ,都很难实现了 !

一阵沉默, 看来没救了。

夜已深,大家谈论得有点累了,纷纭睡去。

3第三夜

第三天,机房夜话连续, 但还是没有办理方案。
气氛有点小尴尬。

老成持重的Java咳嗽了几声,示意要发言了。

“你们知道吗, 我们是一个企业内部系统,人类搞SSO便是想肃清这多个账号的问题,将来每个别系都不须要掩护自己的用户系统, 他们会建立一个统一的认证中央,所有的用户注册和认证都在那里做。

“这么做行得通吗,认证中央怎么关照我们说用户已经认证了?” C#问道

“这个过程轻微有点繁芜” , Java 对C# 说, “举个例子来阐明下, 比如用户通过浏览器先访问你这个别系www.a.com/pageA , 这个pageA是个须要登录才能访问的页面,你创造用户没有登录, 这时候你须要做一件额外的操作,便是重定向到认证中央,www.sso.com/login?redirect=www.a.com/pageA”

C#说: “为什么后面要跟一个redirect的url呢? 奥,明白了, 将来认证通过后,还要重定向到我这里来。

“没错, 浏览器会用这个www.sso.com/login?redirect=www.a.com/pageA 去访问认证中央, 认证中央一看, 没登录过, 认证中央就让用户去登录, 登录成功往后, 认证中央要做几件主要的事情 :

1. 建立一个session。

2. 创建一个ticket (可以认为是个随机字符串)

3. 然后再重定向到你那里, url 中带着ticket : www.a.com/pageA?ticket=T123 与此同时cookie也会发给浏览器,比如:Set cookie : ssoid=1234, sso.com ”

“可是这个cookie对我一点用途都没有啊,跨域不能访问啊。

“人家网站sso.com的cookie对你肯定没用了, 浏览器会保存下来。
但是把稳那个ticket ” Java 提醒道, “这个东西是个主要的标识,你拿到往后须要再次向认证中央做验证。

“明白,是为了防止不坏美意的人假造”

“你拿着token ,去问下认证中央, 这是您发的token 吗, 认证中央说没错,是我发的,那你就可以认为用户在认证中央登录过了”

“那我该干什么事情呢? ”

“浏览器向你发出的要求不是www.a.com/pageA?ticket=T123 吗, 这时候你既然认为用户已经登录过了,那就给他建立session, 返回pageA这个资源啊”

“嗯, 我还须要给浏览器发一个cookie, 对吧, 这是属于我的cookie : Set cookie : sessionid=xxxx, a.com ” C# 说道

\"大众童子可教, 把稳,这时候浏览器实际上有两个cookie,一个是你发的,其余一个是认证中央发的。
\公众

“如果用户再次访问我其余一个受保护的页面,www.a.com/pageA1, 该怎么办? 难道还要去认证中央登录 ” C#连续问

“那当然不用了,你给浏览器发过你自己的cookie , 到时候浏览器自然会带过来,你就知道它登录过了。

“原来如此, 好麻烦啊” C#感慨道。

Python 插了一句: “如果用户访问C#的系统(www.a.com/pageA)时已经通过认证中央登录了, 然后再访问我www.b.com/pageB, 会发生什么状况呢?”

Java 说:“很大略, 和访问www.a.com/pageA非常类似,唯一的不同便是不须要用户登录了,由于浏览器已经有了认证中央的cookie, 直接发给www.sso.com就可以了”

说着, Java 又画了两张图。

同样,认证中央会返回token , www.b.com 须要做验证

PHP 一贯在努力的听,他说: “实在实质上就一个认证中央的cookie ,加上多个子系统的cookie 而已!

Java 撇了一眼PHP : “总结的很精辟!

C#创造了一点新东西: “在认证中央,为什么要去做一个别系注册的操作呢?, 我看到注册了系统A,还有系统B”

\公众SSO 是单点登录,是不是还要有单点退出啊, 用户在一个别系退出了,认证中央须要把自己的会话和cookie干掉,然后还要去关照各个别系, 让他们把自己的会话统统干掉,这样才能在所有的系统都实现真正地退出啊。
\"大众 Java回答。

大家琢磨了一下子,很快就鼓噪起来:

“太麻烦了”

“我们的代码还得改动不少呢”

“重定向太多了, 把我都搞晕了”

“我以为人类不会这么搞!

......

Java 说“别鄙视它, 这个点子是耶鲁大学提出的,叫做CAS(Central Authentication Server ) , 是一个很著名的SSO办理方案, 弄不好人类就会采取。
你们呐,还是好好学学吧。

1、具有1-5事情履历的,面对目前盛行的技能不知从何下手,须冲要破技能瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时口试碰钉子。
须要在短韶光内学习、跳槽拿高薪的可以加群。

3、如果没有事情履历,但根本非常踏实,对java事情机制,常用设计思想,常用java开拓框架节制闇练的,可以加群。

4、以为自己很牛B,一样平常需求都能搞定。
但是所学的知识点没有系统化,很难在技能领域连续打破的可以加群。

5. 群号,高等架构群: 283943715 备注好信息!

6.阿里Java高等大牛直播讲解知识点,分享知识,下面几大专题都是各位老师多年事情履历的梳理和总结,带着大家全面、科学地建立自己的技能体系和技能认知!

标签:

相关文章