1,定义单点登录及其原理
- 定义与概念 单点登录(Single Sign-On, SSO)是一种身份验证服务,在这种服务中,用户登录一次即可获得多个相互信任的应用程序的访问权限,而无需对每个系统重复登录。SSO服务通常由一个中心认证服务器提供,该服务器验证用户身份并向各个应用发放访问令牌。一旦用户在一个应用程序中认证,此用户便可以无缝访问其他所有系统,而无需再次验证身份。 例如,一个用户在企业的任一服务(如电子邮件)登录后,可以自动登录到公司的其他系统(例如项目管理工具或内部门户网站)。
- 应用示例 例如,若用户在登录阿里巴巴集团的一个服务(如淘宝)后,再转到另一个服务(如天猫),用户将不需再次登录即可访问天猫,这便是单点登录的实际应用场景。
- 实现方法 3.1 同一域名下的SSO 在同一个主域名下,不同子域的应用可以通过设置父域的Cookie来共享会话信息。只需设置Cookie的domain属性为共同的顶级域名,并将path设为"/"(根目录),就可以实现共享。这样,所有子域下的应用都可以访问这个Cookie,并据此验证用户身份。 3.2 跨域单点登录方案一 跨域SSO较复杂。一种常见方法是设置一个中央认证服务,所有的登录请求都会重定向到这个服务。认证服务对用户进行身份验证,并发放一个令牌(Token),这个令牌随后会被用来在各个系统间传递用户身份。各系统在接收到令牌后需要回到认证服务进行验证,确保令牌有效无误。一旦验证通过,用户便被视为已登录,并且每个系统都会创建自己的会话。 3.3 跨域单点登录方案二 使用前端存储(如localStorage)来实现跨域SSO。当用户首次登录时,系统会将令牌(Token)存储在前端。然后,利用iframe和postMessage技术,可以将这个令牌安全地传输到其他域的前端存储中。这样,用户在新域访问时,前端脚本可以检查localStorage,找到令牌并用它来请求后端验证用户身份,从而实现跨域的单点登录。
- 认证流程 在单点登录系统中,用户首先访问任一系统的受保护资源,系统会检查用户是否已登录: 若未登录,系统将用户重定向至SSO认证中心,并将原始请求的URL作为参数; 认证中心检查是否存在全局会话,即用户是否在其他系统中已登录; 如果用户未登录,他们将被引导至登录页面输入凭证; 成功登录后,认证中心创建全局会话,并生成一个令牌; 用户被重定向回最初请求的系统,并携带上令牌; 系统用令牌向认证中心请求验证,确认令牌有效后,为用户创建本地会话并提供所请求的资源。 此后,用户访问其他系统时,流程类似但不再需要登录。当全局会话存在时,局部会话可随时建立。如果全局会话结束,所有局部会话也将终止,确保用户从所有系统中安全登出。
2,解释上拉加载更多与下拉刷新的机制,并说明如何实现它们
上拉加载是当页面滚动到最下方后触发事件获取更多数据; 下拉刷新是指当处于页面首屏向下拉动页面重新加载当前页面信息
上拉加载通过监听滚动事件实现,当滚动的内容高度scrollTop加上屏幕可视区域window.clientHeight大于整个页面内容高度window.scrollHeight时表明已经下拉到最底部了,触发相应的获取更多数据方法。另外scroll事件是个高频触发的事件,可以搭配防抖降低触发的频率。
下拉刷新是首先通过touchstart事件获取touchevent中用户手指在页面中的位置信息,若手指处于浏览器首屏则记录手指距离html页面顶部的距离,触发touchend事件中后与touchstart记录进行比对,如果touchend中获取的pageY大于初始位置一定范围则表明当前操作为首屏下拉,进行重新加载操作。
3,DOM常见的操作有哪些?
文档对象模型( DOM, Document Object Model )主要用于对HTML和XML文档的内容进行操作。DOM描绘了一个层次化的节点树,通过对节点进行操作,实现对文档内容的添加、删除、修改、查找等功能
4,vite打包和webpack打包的区别,vite里面是如何处理的,着重了解开发环境的不同
5,什么是闭包? 仅供学习,如有侵权请告知 blog.csdn.net/qq_43923146…