标准化登录与Token维护流程图
这篇文章用两张流程图讲清楚标准化登录与 Token 维护机制。 核心结论: access token 用于业务接口鉴权,短期有效。 refresh token 用于换新 access token,长期有效,建议放 HttpOnly Cookie。 前端负责维护 Authorization: Bearer <access token>,后端负责校验与签发。 图一:登录链路 flowchart TD A[用户登录 /api/auth/login] --> B[后端验证凭证] B --> C[签发 access token] B --> D[Set-Cookie refreshToken HttpOnly] C --> E[响应 JSON token] E --> F[前端存内存 token] F --> G[设置 Authorization Bearer] G --> H[访问业务API] H --> I[后端验签通过并返回数据] 图二:刷新与...
解决iOS分发Non-public API问题
问题描述在提交 iOS 应用到 TestFlight 或 App Store 时,遇到以下错误: 1234590338: Non-public API usage. The app references non-public selectors in Chainbox-QA: _isKeyDown, _modifiedInput, _modifierFlags. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. 这是因为 React Native 的 RCTKeyCommands.m 和其他文件中使用了 Apple 的私有 API 选择器。 解决方案在 Podfile 中添加 post_install 脚本,自动替换这些私有 API 名称。 1. 首先定义 find_and_repl...
关于Vite配置preprocessorOptions.scss.additionalData全局引入scss文件无效问题
在vite项目中,有时候我们需要全局引入css变量、scss变量,或者引入全局scss样式文件,vite提供了以下这种配置方式123456789//vite.config.jscss: { preprocessorOptions: { //define global scss variable scss: { additionalData: `@import '@/styles/variables.scss';`, } }} 这种写法没有任何问题,并且我已经在一些项目中实践过了,可有一次我创建新项目的时候却无效了,在浏览器上也没有看到任何相关的样式,但是在main.js中引入又是正常的,后来去插件官方论坛找到了解决方法是这样说的。 原来这不是一个bug,只有在main.js引入一个其他scss文件或者在.vue文件中使用 style,并且里面有内容,则 scss.additionalData 配置的全局scss文件就可以正确引入了,还建议我们在 scss.additio...
安装依赖超时443解决
安装依赖的时候有时会遇到安装不上超时等问题 解决方法使用IPv4的方法连接而不是IPv6更改方式 注意别把IPv4也给禁用掉,取消勾选IPv6即可 确认成功后即可正常安装依赖
Git推送失败443
git再推送代码的时候经常会遇到超时或者无法推送等问题本编文章主要解决Failed to connect to github.com port 443 after 21090 ms: Couldn‘t connect to server的问题问题原因:这是由于本机系统代理端口和git端口不一致导致的。解决办法:1.查看自己本机系统代理1设置---网络和Internet---代理---地址---端口 2.修改git配置:(其中的7890改为你电脑的端口号)12git config --global http.proxy http://127.0.0.1:7890git config --global https.proxy http://127.0.0.1:7890 3.再次push就可以成功上传。1git push origin source
电脑共享VPN到手机方法
实现原理电脑开启VPN,手机和电脑连接同一个WIFI,设置手机代理为电脑的HTTP代理端口,从而实现共享VPN1.设置代理的方法如下图所示,我使用的是clash,在查看clash代理端口时,可以直接在windows搜索栏中输入“代理服务器设置”, 其他的vpn应该类似。 2.手机wifi代理设置完毕之后就可以正常使用网络了
ts实现康威生命游戏
生命游戏中,对于任意细胞,规则如下: 每个细胞有两种状态 - 存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动(如图,黑色为存活,白色为死亡) 当前细胞为存活状态时,当周围的存活细胞低于2个时(不包含2个),该细胞变成死亡状态。(模拟生命数量稀少) 当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。 当前细胞为存活状态时,当周围有超过3个存活细胞时,该细胞变成死亡状态。(模拟生命数量过多) 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。(模拟繁殖) 可以把最初的细胞结构定义为种子,当所有在种子中的细胞同时被以上规则处理后,可以得到第一代细胞图。按规则继续处理当前的细胞图,可以得到下一代的细胞图,周而复始。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263export class GameOfLife { private activeC...
OKX插件登录BTC
由于BTC网络的登录并不像wallet connect EVM网络那样使用现成的包直接可以建立连接器只要你浏览器内部装有OKX插件就可以直接唤起并登录具体方法如下PC端登录方法1234567const connectBTC = () => { if (typeof (window as any).okxwallet !== 'undefined') { const res = await (window as any).okxwallet.bitcoin.requestAccounts(); } else { console.log('OKX Wallet is not installed.'); }} PC发起交易 目前仅支持BTC主网12345678910111213const sendBTC = () => { try { await (window as any).okxwal...
Wagmi返回合约完整错误日志
使用Wallet Connect + Wagmi 集成EVM登录交易等操作遇到的一些问题使用useWriteContract发起合约交易直接打印错误日志返回的信息不完整官方文档也没有给到完整的Error信息返回处理,搜也搜不到,去wagmi的discord下面找到了用户自己写的一个解析Wagmi的方法如下12345678910111213141516171819202122import { BaseError } from "wagmi";const { data: hash, isPending, writeContractAsync, isSuccess: hashSuccess } = useWriteContract()const massComputed = () => { writeContractAsync({ address: contractAddress, abi: abi, functionName: 'contra...
播放Spine动画
安装spine官方依赖1pnpm add @esotericsoftware/spine-player 播放函数(需将动画文件传到CDN或保存到项目文件夹)123456789101112131415161718const playerContainerRef: any = useRef<HTMLDivElement>(null);const loadFiles = () => { const skeletonJsonUrl = `https://xxx/atlas/box-gem/box.json` const atlasUrl = `https://xxx/atlas/box-gem/box.atlas` const player: any = new SpinePlayer(playerContainerRef.current, { jsonUrl: skeletonJsonUrl, atlasUrl: atlasUrl, animation: 'idle',...







