gpt4 book ai didi

java - 嵌入式 Apache FTP 服务器 : Unable to authenticate client using DbUserManager

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:27 24 4
gpt4 key购买 nike

我正在尝试使用“Apache FTP 服务器”创建一个具有内置/嵌入式 FTP 服务器的应用程序。我选择从 MySQL 数据库管理/验证用户。因此,我使用 DbUserManager 来处理用户创建、删除和列出。我能够管理除身份验证之外的所有用户相关操作。我无法从 FTP 客户端登录。服务器甚至不询问密码,只是给出消息“连接被远程主机关闭”。另一个观察结果是 - 如果用户不在数据库中,那么它会要求输入密码,但最终会给出身份验证失败的消息。

这是代码,

public class Dumper {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
FtpServerFactory serverFactory;
FtpServer server;

ConnectionConfigFactory connectionConfigFactory;
ConnectionConfig connectionConfig;

DbUserManagerFactory userManagerFactory;
DbUserManager userManager;
BasicDataSource bdSource;

final Map<String, Ftplet> ftpletMap;
Ftplet ftplet;

// TODO code application logic here
System.out.println("I am Dumper!!");

connectionConfigFactory = new ConnectionConfigFactory();
connectionConfigFactory.setAnonymousLoginEnabled(true);
connectionConfig = connectionConfigFactory.createConnectionConfig();

ftpletMap = new HashMap<>();
ftplet = new DumperLet();
ftpletMap.put("default", ftplet);

// Data Source
bdSource = new BasicDataSource();
bdSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
bdSource.setUrl("jdbc:mysql://localhost:3306/apsdma");
bdSource.setUsername("apsdma");
bdSource.setPassword("apsdma");

// Database User Manager
userManagerFactory = new DbUserManagerFactory();
userManagerFactory.setPasswordEncryptor(new Md5PasswordEncryptor());
userManagerFactory.setAdminName("ambedkar");

userManagerFactory.setDataSource(bdSource);
userManagerFactory.setSqlUserInsert("INSERT INTO FTP_USER (userid, userpassword, homedirectory, enableflag, writepermission, idletime,uploadrate, downloadrate) VALUES ('{userid}', '{userpassword}', '{homedirectory}', {enableflag}, {writepermission}, {idletime}, {uploadrate}, {downloadrate})");
userManagerFactory.setSqlUserUpdate("UPDATE FTP_USER SET userpassword='{userpassword}', homedirectory='{homedirectory}', enableflag={enableflag}, writepermission={writepermission}, idletime={idletime}, uploadrate={uploadrate}, downloadrate={downloadrate} WHERE userid='{userid}'");
userManagerFactory.setSqlUserDelete("DELETE FROM FTP_USER WHERE userid = '{userid}'");
userManagerFactory.setSqlUserSelect("SELECT userid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE userid = '{userid}'");
userManagerFactory.setSqlUserSelectAll("SELECT userid FROM FTP_USER ORDER BY userid");
userManagerFactory.setSqlUserAdmin("SELECT userid FROM FTP_USER WHERE userid='{userid}' AND userid='ambedkar'");
userManagerFactory.setSqlUserAuthenticate("SELECT userpassword from FTP_USER WHERE userid='{userid}'");

userManager = (DbUserManager) userManagerFactory.createUserManager();

serverFactory = new FtpServerFactory();
serverFactory.setConnectionConfig(connectionConfig);
serverFactory.setFtplets(ftpletMap);
serverFactory.setUserManager(userManager);
server = serverFactory.createServer();

try {
server.start();
} catch (FtpException ex) {
Logger.getLogger(Dumper.class.getName()).log(Level.SEVERE, null, ex);
System.out.println(ex.getMessage());
}
}
}

这是客户端输出的屏幕截图, [1]

有人可以指导我出了什么问题或在哪里寻找解决方案吗...

最佳答案

数据库中的“enableflag”字段是否设置为 FALSE 或 1?如果您使用提供的 sql 文件来创建表,则该字段默认设置为 TRUE。

问候

关于java - 嵌入式 Apache FTP 服务器 : Unable to authenticate client using DbUserManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com