WebSocket用SpringSecuirty认证和鉴权
前言刚开始想进行认证感觉还是蛮简单的,也只需要让websocket 的Headers上也带authorization在加上token 的值不就完事了吗。
但websocket 不支持自定义Headers头所以不行,但ws 允许在Sec-WebSocket-Protocol 的请求头加入自定义的参数,也就是说只需要在spring security 中在加入一个对于Sec-WebSocket-Protocol的检测就行了。
添加对 Sec-WebSocket-Protocol 的判断这里的WSHeader其实就是Sec-WebSocket-Protocol。
123456789101112131415161718192021/** * 获取请求token * * @param request * @return token */ private String getToken(HttpServletRequest request) { String token = request.getHeader(header); if (StringUtils.isNotEm ...
Cachefly自动证书上传
前言自从 Cachefly 推出了免费套餐, 作为一个白嫖党,第一时间就去体验了一下,注册需要外币卡需要注意一下,所以注册门槛稍微相对较高吧。试了一下速度,很不错,回国速度非常好,北方基本上走的是ntt 和俄罗斯的线路,南方走的是 hk 的CN2 线路,至少分发的图片和静态资源不成问题。
但有个很烦人的问题,它不支持 免费的证书自动签发,需要我自己上传证书,好在他的ssl 证书是自动检测的,也就是说你上传了一个证书是在8月份到期了在7月份又上传了这个域名的证书是11月到期了,会自动在证书过期之前调整成11月的。而且最近学了学go,就用这三脚猫的功夫配合chatGPT 写了一个简单的小玩意。
自动证书上传程序我已经把这个项目开源并且放在了 我的GitHub仓库上 。
其实在仓库的README的文件上已经有写了使用方式,我就直接把README拿过来了。
使用方式
首先,您需要在 https://github.com/biliblihuorong/CacheflySSLUpDate/releases 页面下载适用于您设备的可执行文件。
然后,在执行文件所在目录下创建一个名为 config ...
Hexo Butterfly的SEO优化
前言以前没有怎么优化过seo、站点地图、rss订阅链接、robots 文件,一个都没有写过,不过今年打算重启博客了,自然这些改加上的东西都需要加一下了。
前前后后半年多吧,陆陆续续的,把这些玩意补齐了,但看了很多文章都写的补全,我就只好在来全部整理一下了。
一些插件
hexo-generator-sitemap 构建网站地图
hexo-generator-baidu-sitemap 百度专用的(为什么百度这么有特权😔)
hexo-submit-urls-to-search-engine 自动化提交文章给爬虫
hexo-generator-feed 生成RSS订阅链接
hexo-filter-nofollow 为合适的外链打上 external nofollow noreferrer noopener
作用:
防止搜索引擎追踪该链接,不会直接影响站点的排名。
阻止被链接的页面获取来源页面的信息,增加用户隐私保护。
防止被链接的页面通过 window.opener 访问和操纵打开它的页面,增强安全性。
正文添加robots.txt可以直接在hexo 项目下的source添加 ...
解决Umami v2.3升级问题,Something went wrong.
前言是的没错,发生这样的事情,应该很多Umami只要是v2.2版本应该都遇到了。
我浏览了部分 issues 只能升级到v2.3版本了。
环境我先说一下我自己的环境,我自己的使用:
属于编译安装,没有放在docker
Mysql 5.7
nodjs 18.16.0
npm 9.5.1
正文解决办法有两种,第一种你可以直接尝试升级到MySQL 8.0,如果你想继续和我一样,小鸡的配置不行还想用5.7,请继续往下看。
如果你是和我一样都是Mysql 5.7版本,你需要查看这篇 issues 或者继续往下看。
你需要从GitHub 拉去一份最新的Umami 的代码,你需要找到db/mysql/migrations/02_report_schema_session_data文件夹下的migration.sql这份sql文件,将下面的代码替换和保存。
12345ALTER TABLE `event_data` CHANGE `event_data_type` `data_type` int unsigned NOT NULL;ALTER TABLE `event_data` CHAN ...
换域名了!!
换域名了正好可以来水一篇文章了。
对于域名对于网站来说,很是重要的一部分了,但是我创建博客的时候,对于域名而言起什么,一直很苦恼,然后就给自己起了一个c-dreamer 的域,但是后来慢慢用下来,域名太长了而且也不方便记忆,就四处寻找这域名。
ning.moe 这个域名其实我想给我的朋友的,他的网名就是 lemon 但他自己也不会建站 ,对建站没有任何想法,所以这个个域名就纳入我的手里吧。
moe 的意义?对于我而言正好可以组成 拼音的 柠檬 对于域名本身?
看看wiki?:https://zh.moegirl.org.cn/.moe
当然悄悄告诉你,貌似有一个虚拟的国度叫做 gov.moe
兰空图床使用backblaze作为存储策略
起因因为我很久之前就在使用兰空了,当时是直接默认存储扔到本地的,反正也没有啥问题,还很方便,但那台服务器快到期了。所以我就打算迁移,先来说说虽然为什么不用CF的R2存储,原因是我尝试了很多种办法,但这个兰空图床对于我自己而言就是链接不上,很烦人,所以找到了也是S3协议的backblaze作为我后面使用的存储策略。
为什么要使用 backblaze有以下几点
所有用户无需信用卡都有10gb存储
从CloudFlare出去的流量每个月免费1TB
价格十分便宜,你可以去他们的官网了解更多:官网地址价格
开始准备前在开始之前你需要知道和准备的东西:
兰空图床的版本确保是和我在同一个版本在V2.1
有一个Cloud Flare的账号
有一个backblaze的账号
你需要有一个域名(应该看到这一篇博文的人都有吧)
在后面的内容CloudFlare 将被简写成CF
在后面的内容backblaze将被简写成B2
正片开始B2创建存储桶请访问:https://secure.backblaze.com/b2_buckets.htm 进入B2创建页面。再此页面往下翻,可以更改语言。
起一个你的桶的 ...
解决Hexo博客框架中Twikoo评论框架路径不一致的问题
引言:
在我继续修理博客的过程中,没错,你没有看错,我陆续从今年1月开始维护博客至今。主要原因是我很忙,维护工作也需要时间,而且在修复之后还需要处理一些细节问题,这是我之前没有注意到的。由于当时静态资源几乎全部丢失,现在我已经基本上优化了访问速度,这使得我的Hexo博客框架名副其实。随着我对网站的打理以及撰写一些有用的内容,网站的访问量逐渐提升。然而,我注意到了一些之前未曾注意到的问题。在Hexo博客生成过程中存在一个问题,你可以访问这篇文章的链接https://blog.ning.moe/post/fix-hexo-twikoocomment-path-inconsistency/,也可以在该链接后面添加index.html,但对于Twikoo评论框架而言,这两个链接并不相同。
阅读须知:
本文的操作是在使用”butterfly”主题的情况下进行的,其他主题也可以模仿这个操作,但需要注意先查找自己的主题是否可以直接在配置文件中进行更改。更多细节请参考这个”issues”链接:https://github.com/imaegoo/twikoo/issues/138。
正文:
下面我将 ...
使用GitHub Actions 自动构建部署发布Spring Boot应用
前言最近这一周,我加入了奇奇怪怪的Team,我负责将编写的新接口打包并发布到服务器上。每次都需要手动执行打包、发布、关闭旧版本程序和启动新版本程序等繁琐的步骤,这让我感到非常不便,而且也非常重复。对于这种重复性的任务,我想到了可以利用机器来完成,于是决定尝试使用 GitHub 上的工作流。
需要准备的东西:
掌握搜索引擎技能(保证一直是最新的知识。)
一个大脑🧠
一个GitHub的账号()
掌握基础的git 操作
你需要掌握一门语言例如 Java nodejs等这样才可以使用工作流
本篇就那我自己写的屎山 Spring Boot应用举例子吧
什么是Gitub-Actions?GitHub Actions是自动化工作流程工具,用于自动化构建、测试、部署和集成软件项目。它通过一系列事件、触发器和任务来执行各种操作,以实现持续集成和持续交付。
GitHub允许你可以发布以及共享你自己的Actions,别人可以通过市场找到你的Actions从而不需要在重复造轮子了。
什么是CI/CD?CI/CD是持续集成(Continuous Integration)与持续交付/持续部署(Continuo ...
如何优雅的管理你的密码
本教程是搭建和使用一体的,如果您只是想看如何使用,请直接通过页面的大纲快速跳转。
前言统一密码?可能你对于密码而言,是统一一个密码走天下,这不好也很不安全,虽然现在有点良心的互联网公司不会把你的密码进行md5加密,而是使用其他的加密算法,会生成不一样的密文,但还是不安全。
密码杂乱无章我们在互联网上有很多的身份,需要很多账号,每一个网站想给你提供服务,基本上都需要一个账号也就是网站对你的唯一标识,这样才能给你提供服务。
密码保存到浏览器?不这个其实也是不安全,而且所有设备只能在浏览器上,而且还必须统一浏览器例如chrome 或者 Firefox 等。
其次这个浏览器保存的密码,把用来的解密密钥保存在系统里面而且并没有保护,所有在你电脑上运行的软件都能读取这个文件。
如果你不相信的话HackBrowserData这个程序可以让你直接惊呆,他可以读取浏览器的历史 cookie 以及密码,当然属于安全测试,这个程序没有和我有任何关系。
总结综上所述,我们希望一个安全的,跨平台的,数据在我们自己所保管的、还有免费以及开源。也就只能是 Vaultwarden代替了。
注意为什么不叫bitwa ...
你可能需要知道的docker 的端口问题。
引言docker 这个东西呢,对于我来说又爱又恨吧,爱的事情是可以很快速的进行部署项目,解决一些复杂和繁琐的问题,这也是docker 设计的初衷。恨得呢,本身我对于docker 来说是是一个小白用户,我只会 docker run xxxx 来完成我在github 找到的有趣应用,但是出了问题的时候,我需要去使用搜索引擎查阅的知识。
需要准备的东西?
掌握搜索引擎技能(下面的文章只会叫你如何进行使用基本的iptables)
一个大脑🧠
一台运行了Linux系统的电脑
掌握基本的Linux基本知识
抛出问题应该在阅读这篇文章的人,都在很疑惑,为什么我在docker上使用 docker run -p 指令的时候,和宿主机进行绑定端口,本来我是想使用nginx 进行反代的,我自己的防火墙也没有放行这个端口,但从外部确确实实的可以访问。
为什么会出现这个问题?在docker 官方文档上就有这个解释,docker 使用 -p 进行放行端口的时候,低层使用 iptables防火墙 FORWARD将流量转发到docker 运行的容器里面。
我拿 Iptables防火墙 这篇文章的图进行来说明一下
...