TortoiseSVN 不要求登录凭据

TortoiseSVN not asking for login credentials

我在我的 Raspberry Pi 3 上的 Apache2 服务器上设置了多个存储库,由标准 svn 程序创建。

我创建了一个 svn_access_control 文件,如下所示:

[/]
* = r

[repo1:/]
Niko = rw
* =

我还使用以下命令创建了多个用户:

htpasswd -m /etc/apache2/dav_svn.passwd USERNAME

我的dav_svn.conf里面写了下面几行:

<Location /svn>
  DAV svn
  SVNParentPath /home/pi/repos
  AuthType Basic
  AuthName "Subversion Repo"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /etc/apache2/svn_access_control
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
 </Location>

然而,当我想在 Windows 8.1 机器上通过 ToirtoiseSVN 访问 repo1 时,系统不会提示我登录对话框。它只是跳到 "Access forbidden" 消息。

Access to '/svn/repo1' forbidden

认证数据已经在客户端清除。

我必须更改哪些设置才能让 TortoiseSVN 提示我登录?

为什么要使用 <LimitExcept> 指令? 你应该只说 require valid-user

解释:

LimitExcept 告诉服务器您只需要对 "write" 访问权限,因此 Apache 不会向客户端请求读取访问权限(SVN 读取访问权限由 WEBDAV 组成,以下操作:GET PROPFIND OPTIONS报告 - 只是你告诉 apache 的操作你不需要限制......)。

所以 SVN 不会将用户信息发送到服务器(服务器没有请求它们),然后 SVN 模块评估访问权限并且 Bong! 你的访问被拒绝了。

改为使用此配置: <Location /svn> DAV svn SVNParentPath /home/pi/repos AuthType Basic AuthName "Subversion Repo" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /etc/apache2/svn_access_control Require valid-user </Location>