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

十九(GIT2)、token、黑马就业数据平台(页面访问控制(token)、首页统计数据、登录状态失效)、axios请求及响应拦截器、Git远程仓库

1. JWT介绍

JSON Web Token 是目前最为流行的跨域认证解决方案,本质就是一个包含信息的字符串。

如何获取:在使用 JWT 身份验证中,当用户使用其凭据成功登录时,将返回 JSON Web Token(令牌)。

作用:允许用户访问使用该令牌(token)允许的路由、服务和资源。

2. 黑马就业数据平台

2.1 页面访问控制(token)

// * 抽取判断是否有token的函数,供各个有敏感信息的页面使用 → index和student页面
// 1. localstorage里面获取token,判断,如果没有token提示请登录 → 跳转到login
function checkLogin() {const token = localStorage.getItem("token");if (token === null) {showToast("未登录,请先登录");setTimeout(() => {location.href = "./login.html";}, 1500);}
}

2.2 用户名渲染

// * 抽取函数渲染用户名 → 首页和学生页显示用户名
// 登录的时候保存了用户名在localstorage
// 取localstorage的用户名,找标签写入
function renderName() {const username = localStorage.getItem("username");document.querySelector(".username").innerHTML = username;
}

2.3 退出登录

// * 抽取退出登录的函数
// 点击 → 跳转到login 且删除localstorage里面的数据
function logout() {document.querySelector("#logout").addEventListener("click", function () {location.href = "./login.html";localStorage.removeItem("username");localStorage.removeItem("token");});
}

2.4 首页-统计数据

2.5 登录状态失效

// 统计数据区域
async function getData() {// const token = localStorage.getItem("token");// * common.js 已添加请求(统一设置token)和响应拦截器(统一处理token失效问题) → catch部分代码移除,try catch注释// try {/* const res = await axios.get("/dashboard", {// * 请求头参数:校验是否登录headers: { Authorization: token },}); */const res = await axios.get("/dashboard");// console.log(res);const { groupData, overview, provinceData, salaryData, year } = res.data;// console.log(overview);Object.keys(overview).forEach((key) => {document.querySelector(`.${key}`).innerHTML = overview[key];});// } catch (error) {// console.dir(error);// console.log(error.response.status); // 401// 401 token验证失败(token过期或被恶意篡改)// todo:跳转到登录页面重新登陆,本地存储数据清除/* if (error.response.status === 401) {showToast("登陆失败,请重新登录");localStorage.removeItem("username");localStorage.removeItem("token");// 延迟跳转登陆页面setTimeout(() => {location.href = "./login.html";}, 1500);} */// }
}

3. axios-拦截器

// 添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});// 添加响应拦截器
axios.interceptors.response.use(function (response) {// 对响应数据做点什么return response;}, function (error) {// 对响应错误做点什么return Promise.reject(error);});

3.1 请求拦截器

// * axios拦截器:请求发送之前,响应回来之后执行一些 公共 的逻辑
// * 添加请求拦截器 - 统一设置token 多次请求时需token验证,故设置拦截前完成
axios.interceptors.request.use(function (config) {// console.log(config);// config["headers"]["haha"] = "hehe";// config.headers.haha = "hehe";// headers.haha = "hehe"; // ×// 在发送请求之前做些什么,比如: 统一设置token// * 获取缓存中的token,设置请求头参数const token = localStorage.getItem("token");if (token) {config.headers.Authorization = token;}return config;},function (error) {// 对请求错误做些什么return Promise.reject(error);}
);

3.2 响应拦截器

// * 添加响应拦截器 - 统一处理token失效 + 数据剥离
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么,比如: 数据剥离// console.log(response.data);return response.data;},function (error) {// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么: 比如统一处理token失效if (error.response.status === 401) {showToast("登陆失败,请重新登录");localStorage.removeItem("username");localStorage.removeItem("token");// 延迟跳转登陆页面setTimeout(() => {location.href = "./login.html";}, 1500);}return Promise.reject(error);}
);

4. Git 远程仓库

远程仓库是指托管在因特网或其他网络中的个人项目版本库。

作用:本地仓库备份,多人协作。

4.1 新建仓库及推送

添加远程仓库:git remote add origin 远程仓库地址

推送到远程仓库(首次):git push -u origin "分支名"

推送到远程仓库(重复):git push

4.2 远程仓库-克隆

克隆(clone): 获得一份已经存在了的 Git 仓库的拷贝。

1. 执行命令,克隆仓库

  git clone 远程仓库地址

2. 命令行工具,进入目录

  cd 仓库目录

3. 查看并切换分支

  git branch –a

  git checkout 分支名

4.3 远程仓库-拉取

拉取(pull): 从远程仓库拉取代码并合并到本地。

注意: 如果要让其他人访问自己的仓库,需要设置为 开源

git pull

4.4 配置SSH

SSH是一种网络协议,用于计算机之间的加密登录。

1. 生成ssh公钥:ssh-keygen -t ed25519 -C "任意名字"

2. 查看及拷贝公钥:cat ~/.ssh/id_ed25519.pub

3. 配置公钥到gitee

4. 测试激活:ssh -T git@gitee.com

4.5 Git远程仓库-重新上传

1. 删除远程仓库地址

  git remote remove origin

2. 添加远程仓库(ssh)

  git remote add origin 远程仓库地址

3. 推送到远程仓库(首次)

  git push -u origin 分支名

相关文章:

十九(GIT2)、token、黑马就业数据平台(页面访问控制(token)、首页统计数据、登录状态失效)、axios请求及响应拦截器、Git远程仓库

1. JWT介绍 JSON Web Token 是目前最为流行的跨域认证解决方案,本质就是一个包含信息的字符串。 如何获取:在使用 JWT 身份验证中,当用户使用其凭据成功登录时,将返回 JSON Web Token(令牌)。 作用&#xf…...

文生图模型开源之光!ComfyUI - AuraFlow本地部署教程

一、模型介绍 AuraFlow 是唯一一个真正开源的文生图模型,由Fal团队开源,其代码和权重都放在了 FOSS 许可证下。基于 6.8B 参数优化模型架构,采用最大更新参数化技术,还重新标注数据集提升指令遵循质量。在物体空间和色彩上有优势…...

spring boot之@Import注解的应用

我们知道spring boot会通过ComponentScan定义包扫描路径进行业务定义的bean的加载,但是对于很多不在此包路径下定义的bean怎么办呢?比如其他jar包中定义的。这时候import就发挥作用了,通过它也可以实现bean的定义。具体是怎么做的呢&#xff…...

【记录】用JUnit 4的@Test注解时报错java.lang.NullPointerException的原因与解决方法

项目场景: 在练习黑马点评的逻辑过期解决缓存击穿时,编写了一个预热缓存数据的单元测试 SpringBootTest public class HmDianPingApplicationTests {Resourceprivate ShopServiceImpl shopService;Testpublic void testSaveShop() throws InterruptedE…...

Spring Boot 自动化脚本-多线程批量压缩图片

Spring Boot 自动化脚本-多线程批量压缩图片 支持多线程支持多路径配置支持断点续压支持压缩后文件层级路径不变脚本一键启动,支持本地 main 调用或远程 POST 接口调用 背景:在进行数据迁移时,发现附件文件夹过于庞大,且大都为图…...

依托 Spring Boot框架,精铸高扩展性招聘信息管控系统

1 绪 论 1.1 课题背景与意义 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国,网上管…...

【前端】理解 JavaScript 对象属性访问的复杂性

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯理论基础:JavaScript 对象属性的访问模式1. 点符号访问(Dot Notation)2. 方括号访问(Bracket Notation)点符号…...

Django异步视图adrf解决办法

提问 在Django编写异步视图的时候会出现 AssertionError: Expected a Response, HttpResponse or HttpStreamingResponse to be returned from the view 或者 TypeError: sync_to_async can only be applied to sync functions. 诸如此类的错误的时候一般发生在异步视图中…...

【一文了解】C#基础-接口

目录 1. 定义 2. 接口的特点与规则 3. 接口的实现 3.1单接口实现 3.2多接口实现 4. 接口的作用和用途 1)扩展行为 2)规范行为 3)降低耦合 5. 接口与继承的比较 1)继承 2)接口 6. 接口与抽象类的比较 1)IComparable(比较器,常用) 2)IComparer(比较器)…...

活着就好20241210

亲爱的朋友们,大家早上好!🌞 今天是10号,星期二,2024年12月的第十天,同时也是第50周的开始,农历甲辰[龙]年十一月初六日。在这晨光熹微的美好时刻,愿那温暖而明媚的阳光轻轻拂过你的…...

多表设计 - 一对一多对多

一.一对一关系概述: 例如:一位用户只能有一张身份证,一张身份证也只能对应一位用户 如果用户基本信息查询频率比用户身份信息查询频率高,为了提高效率,可拆分为两张表: 此时如何体现一对一的关系呢&#xf…...

实现 DataGridView 下拉列表功能(C# WinForms)

本文介绍如何在 WinForms 中使用 DataGridViewComboBoxColumn 实现下拉列表功能,并通过事件响应来处理用户的选择。以下是实现步骤和示例代码。 1. 效果展示 该程序的主要功能是展示如何在 DataGridView 中插入下拉列表,并在选择某一项时触发事件。 2.…...

使用Java创建RabbitMQ消息生产者的详细指南

目录 在现代分布式系统中,消息队列是实现异步通信的重要工具。RabbitMQ作为一种流行的开源消息代理,支持多种消息协议,广泛应用于微服务架构和事件驱动的应用程序中。本文将深入探讨如何使用Java创建RabbitMQ的消息生产者,发送消息…...

【LC】160. 相交链表

题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&…...

Spark架构及运行流程

Spark架构图 Driver: 解析用户的应用程序代码,转化为作业(job)。创建SparkContext上下文对象,其负责与资源管理器(ClusterManager)通信,进行资源的申请、任务的分配和监控等。跟踪Executor的执行情况。可通过UI界面查询运行情况。…...

Linux安装Python2.7.5(centos自带同款)

卸载已安装的python,防止版本兼容问题 rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps 删除残余文件 whereis python |xargs rm -frv 安装前提是已安装gcc和g gcc --version g --version 下载安装python2.7.5 https://www.python.org/downloads/release/pyt…...

上传ssh公钥到目标服务器

创建密钥 ssh-keygen -t rsa -b 4096 -C "xxxx.xx"上传 sudo ssh-copy-id -i /Users/xx/.ssh/id_rsa.pub root127.0.0.1...

【LLMs】用LM Studio本地部署离线大语言模型

文章目录 一、下载LM Studio二、下载大语言模型1. 查看模型介绍2. 点击模型文件进行下载2.1 完整下载2.2 部分下载 三、加载模型1. 打开LM Studio图形化界面,点击**My Models**2. 然后,点击“...”,选择“change”,选择刚下载好的…...

SpringBoot下类加入容器的几种方式

SpringBoot下类加入容器的几种方式 在 Spring Boot 中,类加入容器的方式不仅多样,而且每种方式都有其特定的使用场景。以下是几种常见的将类加入 Spring 容器的方法及其适用场景: 1. 使用 Component 及其派生注解 使用场景:当开…...

【Mysql】忘记Root密码后如何不影响数据进行重置密码

方法一:通用方法--启动时跳过权限表 1> 停止数据库 以管理员方式打开cmd!! C:\Users\Administrator>net stop mysql MySQL 服务正在停止.. MySQL 服务已成功停止。 2> 启动时跳过权限表 mysqld --console --skip-grant-tables -…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...