https://blog.csdn.net/ssmile/article/details/52468738 默认在Linux下Apache+SVN没有提供用户修改密码功能,这里利用PHP脚本来为用户提供一种修改密码的方法。
第一步,用户在修改密码之前需要先登录,而登录的验证方法和访问SVN是一样的,在/etc/apache2/mods-available/alias.conf中加入如下配置
Alias /svntools/ "/var/www/svntools/" <Directory "/var/www/svntools"> AuthName "svntools repository" AuthUserFile /var/repository/htpasswd<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
第二步,创建 /var/www/svntools 目录,创建一个php文件,如index.php,输入以下代码
$username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名 $authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码 $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码 $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码 $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码 $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action else if($authed_pass!=$input_oldpass){ $action = "oldpasswrong"; else if(empty($newpass)){ else if($newpass!=$repeatpass){ <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Subversion 在线自助密码修改</title> <script language = "javaScript"> var newpass=myform.newpass.value; var repeatpass=myform.repeatpass.value; alert("两次输入密码不一致,请重新输入!"); border: 1px solid #CCCCCC; background-color: #f9f9f9; border-bottom-width: 1px; border-bottom-style: solid; background-color: f6f6f6; <input type="hidden" name="action" value="modify"/> <table width="220" cellpadding="3" cellspacing="8" align="center"> <th colspan=2>Subversion 密码修改</th> <td align="left"> <?=$username?></td> <td><input type=password size=12 name=oldpass></td> <td><input type=password size=12 name=newpass></td> <td><input type=password size=12 name=repeatpass></td> <input οnclick="return loginIn(this.form)" class="button" type=submit value="修 改"> <input name="reset" type=reset class="button" value="取 消"> else if($action == "oldpasswrong"){ else if($action == "passempty"){ else if($action == "passnotsame"){ $passwdfile="/var/repository/htpasswd"; $command='"/usr/bin/htpasswd" -b '.$passwdfile." ".$username." ".$newpass; system($command, $result); $msg="用户[".$username."]密码修改成功,请用新密码登陆."; $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!"; <script language="javaScript"> window.location.href="<?=$_SERVER["PHP_SELF"]?>"
第三步,修改用户密码文件权限
chown www-data:www-data /var/repository/htpasswd
第四步,访问http://hostname/svntools/index.php
PS:网上提供的修改用户密码基本都是类似这个脚本,但是注意,php的页面需要在“<?”标签后面加上“php”字符串,否则都无法正常运行。
|