跳至主要內容

24日


24日

Idea build踩坑

运行 ruoyi-vue=plus 报错

Non-resolvable import POM: The following artifacts could not be resolved: org.dromara:ruoyi-common-bom:pom:5.1.2 (absent)

缓存也清了,JDK版本也都检查了,还是这个错误

解决:点击 rebuild project 就好了...

付费文档破解

参考:https://www.52pojie.cn/thread-1886314-1-1.htmlopen in new window

两种类型:

  • 密码从后台获取,再验证
  • 密码保存在静态页面本地

密码从后台获取,再验证

  • network 中找到验证请求,右键进入 source plane

  • 加断点

    image-20240324123650136
    image-20240324123650136
  • image-20240324123745640
    image-20240324123745640
  • s != i 处判断时,将 s 改为 i 的值即可

密码保存在静态页面本地

  • 禁用缓存

    image-20240324125229389
    image-20240324125229389
  • 刷新页面,ctrl + F 搜索验证码错误

  • 在判断处打个断点就能看到密码

转正PPT大纲

  • 个人简介
  • 试用期工作总结
    • 加密安全
    • 账号系统
    • 支付系统
    • 资源寻址
  • 个人成长与不足
  • 下阶段计划

加密安全

Situation:

  • 在SDK服务期与SDK客户端的通信中,存在通信安全问题,需要解决。

Task:

  • 实现一个加密通信的组件,支持多种加密方式,同时确保对新加密算法的拓展友好,并且采用每次通信都分配新密钥的方式,抛弃传统固定密钥的方式。

Action:

  • Situation: 在SDK服务期与SDK客户端的通信中存在安全问题。
  • Task: 实现一个安全的加密通信组件。
  • Action:
    • 开发加密通信组件,支持多种加密方式,如对称加密、非对称加密等。
    • 设计并实现开闭原则,确保对新加密算法的拓展友好,使系统能够轻松地应对未来的安全需求变化。
    • 弃用传统固定密钥的方式,采用每次通信都分配新密钥的方式,提高通信安全性。
    • 编写文档和示例代码,以便开发人员能够轻松地集成和使用该加密通信组件。

Result:

  • 成功实现了一个加密通信组件,解决了SDK服务期与SDK客户端的通信安全问题。该组件支持多种加密方式,并且遵循开闭原则,对新加密算法的拓展友好。通过采用每次通信都分配新密钥的方式,大大提高了通信的安全性。

账号系统

Situation:

  • 在游戏开发过程中,需要建立一个安全可靠的账号系统来管理用户信息和登录认证。

Task:

  • 开发一个游戏的账号系统,确保通信的安全性,并包括基本的登录、注册、密码修改等功能,以及游客登录和第三方登录的集成。

Action:

  • Situation: 在游戏开发过程中,需要一个安全的账号系统。
  • Task: 开发游戏账号系统,确保通信安全和用户身份验证。
  • Action:
    • 设计并开发基于JAVA的加密插件,支持对称加密和非对称加密,并通过SPI机制实现加密算法的可替换性。
    • 实现动态密钥系统,保证通信的安全性,采用动态密钥的方式避免传统私钥暴露的安全隐患。
    • 开发账号模块,包括基础的登录、注册、重新登录、修改密码、邮箱验证码、图形验证码等功能的实现。
    • 集成游客登录和第三方登录功能,支持谷歌、苹果、Facebook和Game Center登录。
    • 增加二级登录认证功能,提高账号安全性。

Result:

  • 成功开发了游戏账号系统,确保了通信的安全性,并且提供了丰富的登录方式和额外的安全认证功能,提高了用户体验和账号安全性。

支付系统

  1. 情景(Situation): 我们面临着开发一个全面的支付系统的挑战,该系统需要支持不同平台(如APP STORE、GOOGLE PLAY和PayPal),并且需要处理一次性商品和订阅功能。此外,我们需要一个后台系统,用于有效地管理商品、订单、退款和回调。
  2. 任务(Task):
    • 开发支付系统,确保它能够与APP STORE、GOOGLE PLAY和PayPal进行集成。
    • 实现一次性商品和订阅功能,以满足用户的不同需求。
    • 创建后台系统,包括商品管理、订单管理、退款管理和回调管理功能。
    • 确保系统安全、稳定且易于扩展,以应对未来的增长和变化。
  3. 行动(Action):
    • 与团队合作,分析不同支付平台的API文档,设计合适的集成方案,并开始实施。
    • 制定清晰的系统架构,以支持一次性商品和订阅功能,并开始编码和测试。
    • 开发后台系统的各个模块,确保其功能完善,并与前端系统无缝集成。
    • 实施安全措施,如加密、身份验证等,以保护用户数据和交易安全性。
  4. 结果(Result):
    • 成功开发了一个功能完善的支付系统,能够与APP STORE、GOOGLE PLAY和PayPal顺利集成,并支持一次性商品和订阅功能。
    • 后台系统的开发也取得了显著成果,商品管理、订单管理、退款管理和回调管理功能运行良好。
    • 系统安全性得到了有效保障,用户的交易数据得到了可靠的保护,系统稳定性和可扩展性得到了提升。

资源寻址

  1. Situation (情境): 我们面临着开发一个资源寻址系统(游戏热更新系统)的挑战。这个系统需要能够为客户端提供最新的版本信息,并且能够为客户端提供下载 URL。此外,我们还需要在后台建立项目管理、版本管理和资源包管理的功能。
  2. Task (任务): 我的任务是设计和开发一个全面的资源寻址系统,它将能够满足客户端的需求,并且具有可扩展性和高效性。这将包括:
    • 创建一个可靠的版本管理系统,能够追踪和管理不同版本的资源文件。
    • 实现一个灵活的项目管理系统,以便轻松地添加、编辑和删除项目信息。
    • 设计一个资源包管理系统,允许管理员轻松地管理游戏资源的打包和发布。
    • 集成不同的对象存储服务,使文件系统能够挂载各种对象存储服务,并且支持存储的选择和切换。
    • 实现CDN管理功能,包括资源文件的CDN预热和刷新,以确保客户端能够快速地获取更新的资源文件。
  3. Action (行动):
    • 开展需求分析,与团队成员和利益相关者沟通,确定系统的功能和性能要求。
    • 设计系统架构和数据库模型,确保系统具有良好的扩展性和性能。
    • 实施版本管理、项目管理和资源包管理功能,确保系统能够满足用户的需求。
    • 集成不同的对象存储服务,编写适配器以支持存储的选择和切换。
    • 开发CDN管理功能,与CDN提供商集成,实现资源文件的预热和刷新功能。
  4. Result (结果):
    • 成功开发了一个功能强大的资源寻址系统,能够为客户端提供最新的版本信息,并且能够为客户端提供下载 URL。
    • 后台管理系统具有良好的用户体验,管理员可以轻松地管理项目、版本和资源包。
    • 文件系统具有灵活的存储选择和切换功能,管理员可以根据需求选择不同的对象存储服务。
    • CDN管理功能有效地提高了资源文件的传输效率,客户端能够更快地获取更新的资源文件,提升了用户体验。

通过这些行动,我成功地完成了开发一个复杂的资源寻址系统的任务,为团队和客户提供了有价值的解决方案。

Mock模拟数据

想去掉ruoyi的很多功能,删代码又麻烦,还想保留动态路由

于是,觉得使用Mock对api进行拦截

先安装Mock

pnpm install mockjs

代码

创建 mock\system\menu.mock.js

import Mock from 'mockjs'

Mock.mock(import.meta.env.VITE_APP_BASE_API + '/getRouters', 'get', () => {
    return {
            "msg": "操作成功",
            "code": 200,
            "data": [
                {
                    "name": "System",
                    "path": "/system",
                    "hidden": false,
                    "redirect": "noRedirect",
                    "component": "Layout",
                    "alwaysShow": true,
                    "meta": {
                        "title": "系统管理",
                        "icon": "system",
                        "noCache": false,
                        "link": null
                    },
                    "children": [
                       ...
                    ]
                }
            ]
        }
})

在 main.js 中导入

单文件导入

// Mock
import './mock/system/menu.mock.js' 

批量导入(立即加载)

https://juejin.cn/post/7074066400670646303open in new window

import.meta.glob('./**/*.mock.js', { eager: true });

批量导入(懒加载)

const lazyImportModules = import.meta.glob('./**/*.mock.js');

// 调用懒加载的one模块import函数进行导入
const lazyOneModule = await lazyImportModules['./mock/system/menu.mock.js']();

// 调用导入后one模块进行打印
lazyOneModule.default.print('这是menu.mock模块!');
上次编辑于:
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度