1

我目前正在开发使用 SFTP 的应用程序。我们的用户使用 FileZilla 客户端上传存储在 Azure 存储中的文件,然后这些文件由我们的 api 处理。目前我们发现用户 A 的文件保存在用户 B 的目录中时存在错误(它不应该存在)。我想模拟用户在本地环境中通过filezilla进行身份验证然后上传文件的过程。当我调试代码时,它总是会出现在下面的这一点,但我无法进入代码。我假设如果我登录到 filezilla 并单击快速连接,它应该会自动命中用户身份验证的断点,但我无法这样做。您如何在本地环境中调试它。将其视为 Web 开发中的 localhost,我如何实现相同的功能,

server = new FileServer();

// 想踏入这个,看看里面有什么怎么触发这个事件???

server.Authentication += (sender, e) =>
{
    MyDbUser myUser;

    // try authenticating the user against a custom user database
    if (MyUserDatabase.TryAuthenticate(
        e.UserName, e.Password, out myUser))
    {
        // construct a user object
        var user = new FileServerUser(myUser.UserName, null, myUser.VirtualRoot);

        // accept authentication attempt with this user object
        e.Accept(user);
    }
    else
    {
        // reject authentication attempt
        e.Reject();
    }
};
4

1 回答 1

0

好的,所以为了进入该事件,您必须在本地环境中运行应用程序,并且当您启动服务器时选择 sftp 和目标端口 22。然后您必须允许该端口的入站防火墙规则(不要忘记将其关闭一次您停止调试会话)。在 filezilla 中,您必须使用 127.0.0.1 作为主机,然后只需输入您的用户名和密码,这将根据您的自定义身份验证进行验证。这样您就可以在本地环境中运行它。只要你点击快速连接,它就会在 server.Authentication 中命中断点

于 2021-10-16T11:07:53.097 回答