当前位置: 首页 > news >正文

【KO】前端面试三

84. 单点登录是什么,具体流程是什么【腾讯一面】

  • 单点登录(SSO,Single Sign - On)概念
    • 在多个相互信任的应用系统中,用户只需登录一次,即可访问所有信任的应用系统,无需重复登录。比如企业内部有办公系统、人事系统、财务系统等,通过 SSO ,员工登录一次就能访问这些系统。
  • 具体流程(以常见的基于令牌的 SSO 为例)
  1. 用户访问应用系统:用户首次访问某个应用系统(如系统 A ),系统 A 发现用户未登录,将用户重定向到 SSO 认证中心,并带上自身的回调地址(如 https://sso.com?redirect_uri=https://appA.com/callback )。
  2. SSO 认证中心认证
    • 若用户未在 SSO 认证中心登录,展示登录页面,用户输入用户名和密码进行登录。
    • 若用户已在 SSO 认证中心登录(可能是之前访问过其他信任应用 ),则直接进入下一步。
  3. 发放令牌:SSO 认证中心生成一个令牌(如 JWT ,包含用户身份信息、有效期等 ),将令牌通过重定向的方式带回给应用系统 A(或者通过 cookie 、localStorage 等方式传递,不同实现有差异 ),同时记录该令牌已发放。
  4. 应用系统校验令牌:应用系统 A 拿到令牌后,向 SSO 认证中心发送请求,校验令牌的合法性(如检查签名、有效期 )。校验通过后,认为用户已登录,为用户建立会话,用户可正常访问应用系统 A 的资源。
  5. 访问其他应用系统:当用户访问另一个信任的应用系统 B 时,应用系统 B 发现用户未登录,同样重定向到 SSO 认证中心。SSO 认证中心发现用户已有有效令牌,直接将令牌传递给应用系统 B ,应用系统 B 校验令牌后,为用户建立会话,用户无需再次输入密码即可访问应用系统 B 。

85. web 网页如何禁止别人移除水印【百度一面】

  • 前端层面(增加移除难度,但无法完全阻止,需配合后端等手段)
    1. 动态生成水印
      • 使用 canvas 生成水印,将水印绘制到页面的 canvasdiv(通过 background - image 等方式 )中,并且定时检查水印是否存在。如果检测到水印被移除,重新生成水印。例如:
function createWatermark() {const watermark = document.createElement('div');watermark.style.position = 'fixed';watermark.style.top = '50%';watermark.style.left = '50%';watermark.style.pointerEvents = 'none';watermark.style.opacity = '0.2';watermark.innerHTML = '水印内容';document.body.appendChild(watermark);setInterval(() => {if (!document.body.contains(watermark)) {createWatermark();}}, 1000);
}
createWatermark();
  1. 利用 MutationObserver:监听 DOM 变化,当检测到水印元素被删除或修改时,立即恢复水印。例如:
const targetNode = document.body;
const config = { childList: true, subtree: true };
const callback = function (mutationsList) {for (const mutation of mutationsList) {if (mutation.type === 'childList') {// 检查水印是否被移除,若移除则重新添加const watermark = document.querySelector('[data - watermark]');if (!watermark) {createWatermark(); }
http://www.xdnf.cn/news/1350883.html

相关文章:

  • RobotFramework介绍与使用
  • 改华为智能插座为mqtt本地控制
  • 计算机视觉工程师业务场景题:智能推荐视频封面
  • ros 消息类型与查阅相关内容
  • Redis面试精讲 Day 28:Redis云原生部署与Kubernetes集成
  • 鸿蒙中CPU活动分析:CPU分析
  • Java—— 动态代理
  • 【Linux网络编程】分布式Json-RPC框架 - 项目设计
  • UAD详解
  • BEVDepth
  • 领码方案:新一代页面权限体系全景解析(完整版)
  • 英伟达显卡GPU驱动的本质
  • 在WSL2 Ubuntu中部署FastDFS服务的完整指南
  • 【K8s】整体认识K8s--K8s架构与集群创建过程
  • GRS认证是国际供应链的“硬性门槛“
  • 数据库字段类型深度解析:从关系型到 NoSQL 的全面指南
  • 自动化运维Ansible
  • 强光干扰与密集场景下工服识别准确率↑89%!陌讯多模态融合算法在安全生产中的实战优化
  • 在Excel和WPS表格中快速插入多行或多列
  • 一个适用于 Word(Mac/Win 通用) 的 VBA 宏:把所有“上角标格式的 0‑9”以及 “Unicode 上角标数字 ⁰‑⁹” 批量删除。
  • PYTHON让繁琐的工作自动化-列表
  • 构建现代高并发服务器:从内核机制到架构实践
  • Win11 下卸载 Oracle11g
  • 青少年机器人技术(五级)等级考试试卷(2020年9月)
  • 基于Python对酷狗音乐排行榜数据分析可视化【源码+LW+部署】
  • 【Win】Motrix+Aria2浏览器下载加速
  • 深入解析Spring Boot自动配置原理:简化开发的魔法引擎
  • 在 Spring Boot 中配置和使用多个数据源
  • C++之list类的代码及其逻辑详解 (中)
  • 构建真正自动化知识工作的AI代理