vue3的网站项目内嵌到别的项目内部,通过用户名免登陆

前言:想把vue3的网站项目1内嵌到别的项目2内部。

        希望在项目2内,点击一个按钮就出现一个页面进入项目1,其中用户名密码是互通的(这一块需要接口调用实现同步),仔细一想,原理应该是提供一个地址链接,前台的routr.push{}进入页面,里面带上query的参数,类似于后端的get请求传参。

注:免密登录直接跳转进入系统内部的路径(密码可以后期双方通讯的时候实现加密

http://localhost:80/#/biglogin?name=admin&pass=123456 

 注:正常的前端登录的路径

http://localhost:80/#/login

1.随便创建一个新页面bigindex.vue,(复制出原有的index.vue页面,因为vue3项目可以作为单独项目独立出来(需要登录),又需要内嵌入另一系统中(内嵌登录的信息直接进入系统内部)

2.加白名单

3.加登陆跳转

4.前端密码加密JSEncrypt 功能

import JSEncrypt from 'jsencrypt';
const encryptor = new JSEncrypt();
const pubKey = `MIGfMA0GCSqGSIb3DQE***********************************************`;
encryptor.setPublicKey(pubKey);
param.pwd = encryptor.encrypt(state.form.password);

5.后端使用解密,前端的JSEncrypt 密码加密功能


import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Map;
import java.util.HashMap;//前端 JSEncrypt 的加解密使用
public class RSAUtil {//公钥,可以写前端public static String public_key=Constant.rsa_public_key;//私钥,只能放后端public static String private_key=Constant.rsa_private_pkcs8;//公钥=MIGfM*****************
//私钥=MIICd**************************public static void test() throws Exception {// 1.初始化秘钥KeyPairGenerator keyPairGenerator;try {keyPairGenerator = KeyPairGenerator.getInstance("RSA");// 随机数生成器SecureRandom sr = new SecureRandom();// 设置1024位长的秘钥keyPairGenerator.initialize(1024, sr);// 开始创建KeyPair keyPair = keyPairGenerator.generateKeyPair();//获取公钥RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();//获取私钥RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();//对公钥进行编码String PUBLIC_KEY = Base64.encodeBase64String(rsaPublicKey.getEncoded());System.out.println("公钥=" + PUBLIC_KEY);//对私钥进行编码String PRIVATE_KEY = Base64.encodeBase64String(rsaPrivateKey.getEncoded());System.out.println("私钥=" + PRIVATE_KEY);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {
//        test();//解密数据try {//生成公钥和私钥genKeyPair();String publicKey = keyMap.get(0);//打印出来自己记录下System.out.println("公钥:" + publicKey);String privateKey = keyMap.get(1);//打印出来自己记录下System.out.println("私钥:" + privateKey);//获取到后,可以放这里,测试下能不能正确加解密publicKey = public_key;privateKey = private_key;String orgData = "test";System.out.println("原数据:" + orgData);//加密String encryptStr =encrypt(orgData,publicKey);System.out.println("加密结果:" + encryptStr);//解密String decryptStr = decrypt("encryptStr ",privateKey);System.out.println("解密结果:" + decryptStr);} catch (Exception e) {e.printStackTrace();}}/*** RSA公钥加密** @param str       加密字符串* @param publicKey 公钥* @return 密文* @throws Exception 加密过程中的异常信息*/public static String encrypt(String str,String publicKey) throws Exception {//base64编码的公钥byte[] decoded = decryptBASE64(publicKey);Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));//RSA加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, pubKey);String outStr = encryptBASE64(cipher.doFinal(str.getBytes("UTF-8")));return outStr;}/*** RSA私钥解密** @param str        加密字符串* @param privateKey 私钥* @return 明文* @throws Exception 解密过程中的异常信息*/public static String decrypt(String str, String privateKey) throws Exception {//64位解码加密后的字符串byte[] inputByte = decryptBASE64(str);//base64编码的私钥byte[] decoded = decryptBASE64(privateKey);Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));//RSA解密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, priKey);String outStr = new String(cipher.doFinal(inputByte));return outStr;}//编码返回字符串public static String encryptBASE64(byte[] key) throws Exception {return (new BASE64Encoder()).encodeBuffer(key);}//解码返回bytepublic static byte[] decryptBASE64(String key) throws Exception {return (new BASE64Decoder()).decodeBuffer(key);}/*** 密钥长度 于原文长度对应 以及越长速度越慢*/private final static int KEY_SIZE = 1024;/*** 用于封装随机产生的公钥与私钥*/private static Map<Integer, String> keyMap = new HashMap<Integer, String>();/*** 随机生成密钥对* @throws Exception*/public static void genKeyPair() throws Exception {// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");// 初始化密钥对生成器keyPairGen.initialize(KEY_SIZE, new SecureRandom());// 生成一个密钥对,保存在keyPair中KeyPair keyPair = keyPairGen.generateKeyPair();// 得到私钥RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();// 得到公钥RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();String publicKeyString = encryptBASE64(publicKey.getEncoded());// 得到私钥字符串String privateKeyString = encryptBASE64(privateKey.getEncoded());// 将公钥和私钥保存到Map//0表示公钥keyMap.put(0, publicKeyString);//1表示私钥keyMap.put(1, privateKeyString);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求满足abc + cba = 1333的a、b、c分别是什么

已知 abccba1333&#xff0c;其中 a、b、c 均为一个数字&#xff0c;编写一个程序求出 a、b、 c 分别代表什么数字&#xff1f; 可以考虑采用暴力枚举的方法&#xff0c;分别求出数的个位、十位、百位&#xff0c;然后相乘判断。代码如下&#xff1a; #include <stdio.h&g…

【Python系列】FastAPI 中的路径参数和非路径参数解析问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

dockercompose部署redis哨兵模式并集成springboot

第一步 编写compose文件 docker-compose.yml version: 3.8networks:redis-network:driver: bridgeservices:redis-master:image: redis:7.2.4container_name: redis-mastercommand: ["sh", "-c", "redis-server --protected-mode no --slave-announ…

产品经理基础入门

一、产品基础&#xff08;需求收集、需求管理、需求分析、结构图、流程图、原型、PRD文档、用户画像、后台的角色管理&#xff09; 产品经理定义&#xff1a; 1.市场分析&#xff1a;找准市场方向&#xff0c;确定哪个市场是值得进入的。 2.用户分析&#xff1a;针对目标市场…

python项目加密和增加时间许可证

1.bat&#xff0c;执行如下的命令&#xff0c;第一句是更新或增加许可证 第二句是加密draw_face.py python offer.py pyarmor obfuscate -O dist draw_face.py绘制自制人脸.py&#xff0c;调用加密的代码draw_face代码 import sys import os import cv2# 添加加密模块所在的路…

爬虫笔记16——异步爬取二手汽车数据去重存入MySQL

需要用到的库 #异步数据库 pip install aiomysql #reids数据库进行去重 pip install redis #用hashlib进行md5加密 pip install hashlib #基于异步IO的网络请求库 pip install aiohttp #xpath获取静态页面数据 pip install lxml目标网站 目标网站&#xff1a;https://www.che…

高考专业组 07组 08组 武汉大学

武汉大学的招生都什么废物点心&#xff0c;搜个专业组都没官方解释&#xff01; 07组&#xff1a;理学&#xff0c;详见下表专业代码07xxxx&#xff0c;例如数学、物理、化学 08组&#xff1a;工学&#xff0c;详见下表专业代码08xxxx&#xff0c;例如机械、电子信息、自动化、…

每天一个数据分析题(三百七十八)- 系统聚类

在系统聚类方法中&#xff0c;哪种系统聚类是直接利用了组内的离差平方和&#xff1f; A. 最长距离法 B. 重心法 C. Ward法 D. 类平均法 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#…

R语言做图

目录 1. 图形参数 2. 低级图形 3. 部分高级图形 参考 1. 图形参数 图形参数用于设置图形中各种属性。 有些参数直接用在绘图函数内&#xff0c;如plot函数可以用 pch&#xff08;点样式&#xff09;、col&#xff08;颜色&#xff09;、cex&#xff08;文字符号大小倍数&…

ONLYOFFICE 桌面编辑器 8.1

ONLYOFFICE 简介 ONLYOFFICE 是一个开源的办公套件&#xff0c;它提供了在线文档编辑器、表格编辑器和演示文稿编辑器&#xff0c;这些编辑器能够兼容 Microsoft Office 格式&#xff08;.docx, .xlsx, .pptx&#xff09;以及其他流行的标准格式。ONLYOFFICE 的核心功能包括多…

Spcok测试代码抛异常场景

测试代码抛异常场景 ‍ class ExceptionSpec extends Specification {def validateService new ValidateService()Unrolldef "验证UserInfo"() {when: "调用校验方法"validateService.validateUser(user)then: "捕获异常并设置需要验证的异常值&qu…

注意力机制的原理

注意力机制的原理 注意力机制是深度学习中的一种关键组件&#xff0c;尤其是在处理序列数据&#xff0c;如自然语言处理任务时&#xff0c;它允许模型关注输入序列的不同部分&#xff0c;而不是对所有元素赋予相同的权重。其基本思想是为每个输入位置赋予一个权重&#xff0c;…

分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别

分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别 目录 分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融…

《2024天猫618大促-首波男装销售报告》

这份报告主要分析了2024年天猫618大促期间的首波男装销售情况,从多个维度进行了深入的复盘和分析。报告中不仅包含了销售数据的统计分析,还对消费者行为、品牌表现、产品趋势等方面进行了详细的解读。通过对这些数据和信息的深入挖掘,报告揭示了当前男装市场的一些重要趋势和特…

qt经典界面框架

目的 其实就是一个简单的界面显示&#xff0c;是很常用的形式。 说起来简单也是简单&#xff0c;但当初&#xff0c;刚开始做时&#xff0c;感觉非常的复杂&#xff0c;不知如何下手。 现在感觉简单多了。 这个框架利用了QT的现成的MainWindow与QDockWidget&#xff0c;这样就…

Vue3 + TS 防抖动

目录 一、防抖动 1、概念 2、原理 3、应用场景 1、概念 通过将多次连续触发的函数调用合并成一次来减少函数的执行次数。防抖的核心思想是在某个时间段内&#xff0c;只执行一次函数&#xff0c;而忽略在此时间段内的其他触发。 2、原理 (1)、定时器&#xff1b; (2)、重…

java基于ssm+jsp 人才公寓管理系统

1管理员功能模块 管理员登录&#xff0c;通过填写用户名、密码进行登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入人才公寓管理系统可以查看个人中心、住户管理、小区公告管理、停车位管理、安保人员管理、安保值班管理、房屋信息管理、外来登记管理、物品…

把STL容器放入共享内存,重用STL allocator,传入模板参数Allocator,可以实现

问题 Q: 如何用共享内存来存放C STL中中的容器&#xff1f; A: 传入自定义的申请共享内存上空间的allocator&#xff0c;见模板参数Allocator 参考 https://www.zhihu.com/question/319108981/answer/649050789 https://en.cppreference.com/w/cpp/container/vector http://…

自定义User-Agent:使用Python Requests进行网络请求

在网络编程和数据采集领域&#xff0c;HTTP请求是与服务器交互的基本方式。User-Agent&#xff08;用户代理&#xff09;是HTTP请求中的一个重要字段&#xff0c;它告诉服务器发起请求的客户端类型和版本信息。在某些情况下&#xff0c;自定义User-Agent可以帮助我们模拟不同的…

CodeIgniter学习笔记 Item6--CI中的常规主题_ci中parent __construct();

$route[default\_controller] welcome; $route[404\_override] ;更重要的功能是&#xff0c;如果我们要实现通过/index.php/news/4.html访问/index.php/article/show/1这样一个需求&#xff0c;可以在routes.php定义路由关系&#xff0c;将原始的URL转换成需要样式 $route[n…