我有一个针对 SVN 服务器的 MySQL 身份验证。配置文件如下所示:
<Location /svn/project>
...
AuthDBDUserPWQuery "SELECT Password FROM SVNUsers WHERE Nickname = %s"
...
</Location>
它运行完美。但是,似乎需要从第二张表中获取用户。起初,我尝试使用 UNION(当然!)。像这样:
AuthDBDUserPWQuery "SELECT Password FROM SVNUsers WHERE Nickname = %s UNION SELECT Password FROM Users WHERE Nickname = %s"
但是,它不起作用,因为我有两个 %s 语句,而第二个语句没有被昵称替换。然后我尝试声明一个 SQL 变量,将 %s 写入其中并使用它。像这样:
AuthDBDUserPWQuery "SET @userName = %s; SELECT Password FROM SVNUsers WHERE Nickname = @userName"
但是,AuthDBDUserPWQuery 不理解变量。如何解决?
谢谢!
答案1
解决方案是使用 MySQL 函数:
AuthDBDUserPWQuery "SELECT SVNAuthenticationFunction(%s) as Password"