为svn服务增加自助修改密码功能

2 篇文章 0 订阅

为svn服务增加自助修改密码功能

  在维护svn服务的过程中,为用户创建了帐号密码,因svn服务原本没有提供修改密码的功能,所以用户如果觉得自己的密码不合适,要修改,则必须通过svn管理员进行修改。这种方式存在两个问题,第一个问题是,密码属于个人隐私,管理员知道也是不合适的;要修改密码,必须经过管理员,操作起来也比较烦琐。为解决上述提到问题,所以考虑为svn服务增加自助修改密码功能,下面讲述整体思路。

一、查找现成方案

  要想多快好省地解决问题,拿来主义是首选,网上一通搜索下来,也确实发现有人给出解决方案“VisualSVN-Server-3.6.4-x64增加自助修改密码”,仔细研究了一下,这个是针对windows下的VisualSVN-Server服务给出的解决方案,和我的实际部署环境有一些出入,直接照搬不大合适,但其主体思路是可以借鉴的,关键点在于通过调用“htpasswd”命令(“htpasswd.exe”链接: https://pan.baidu.com/s/1_qY5rohqFWGcy0rRl2Yy1g 提取码: 7g3a 复制这段内容后打开百度网盘手机App,操作更方便哦
–来自百度网盘超级会员v6的分享;“htpasswd.exe”依赖的“VC_redist.x64.exe”链接: https://pan.baidu.com/s/1G1GK5Z-vjD3AMOTEvvPrkg 提取码: urw9 复制这段内容后打开百度网盘手机App,操作更方便哦
–来自百度网盘超级会员v6的分享),可实现密码校验和密码修改功能,密码校验样例如下:

htpasswd.exe -bv F:\\Repos\\htpasswd user password

密码修改样例如下:

htpasswd.exe -b F:\\Repos\\htpasswd user password

最底层的实现逻辑基础没问题了,接下来的工作就是如何给用户提供一个友好的人机交互接口,下面将进一步进行说明。

二、人机交互接口实现

  整体思路是,先在svn服务所在服务器部署一个封装了前面描述的基础逻辑的微服务,然后对外提供一个网页界面,方便用户填写用户名密码并做提交操作,请求提交给对应的后台服务后,后台服务调用前面提供的微服务最终实现整体业务功能。考虑到提供的网页在对外的域名表现上需要和原本的svn服务保持一致,方便记忆和操作,因此需要借助nginx的重定向功能辗转实现该效果。

1.使用微服务封装前面的命令行

  考虑到功能比较简单,这里直接采用了Hprose作为微服务框架,简单封装之后即可对外提供服务。官网地址为https://hprose.com/,我使用的golang版本框架github地址为https://github.com/hprose/hprose-golang。感兴趣的可作进一步研究实现。

2.人机操作界面及后台

  考虑到整体功能相对简单,可以考虑使用Vite工具直接新建一个vue3项目(https://cn.vitejs.dev/guide/#index-html-and-project-root),然后在此基础上实现H5界面功能。后台实现可参考“基于vue-manage-system和beego搭建web服务”实现。

3.nginx重定向配置

  关键配置信息样例如下:

# public svn service
    server {
        client_max_body_size 1024M; # 避免svn一次提交太大文件导致中断
        listen       80;
        server_name  svn.example.com;
        
        location /passwd/ {
            root   /data/vue/helper/dist;
            index  index.html;
        }
       
        location /assets/ {  # 上面/passwd/依赖的资源文件
            root   /data/vue/helper/dist;
        }

        location /api/ {  # 基础逻辑微服务
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.xx.xx:8100/;
        }
        
        location / {
            proxy_pass http://192.168.xx.xx:80;
        }
    }

其中“svn.example.com”是svn域名,“192.168.xx.xx”是svn服务器所在IP地址,“http://svn.example.com/passwd/”是修改密码网页地址,通过调用“http://svn.example.com/api/”网址提供的接口可以访问前面说明的基础逻辑微服务。
  大体逻辑就是这样了,记录下来,存档备忘。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值