前言:
眼前姐妹们对“apacheserver源代码分析”大约比较关心,你们都想要了解一些“apacheserver源代码分析”的相关资讯。那么小编在网摘上网罗了一些关于“apacheserver源代码分析””的相关文章,希望各位老铁们能喜欢,同学们一起来学习一下吧!今日分享
每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。
架构开源地址:
springboot整合Ftpserver
参考上篇文章:Springboot整合Apache Ftpserver实现文件服务器源码搭建(二)
拓展功能一(密码验证器)用户密码验证
默认配置中,我们使用的用户密码是明文加密模式。
# 明文dbUserManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor()); # Md5dbUserManagerFactory.setPasswordEncryptor(new Md5PasswordEncryptor());# 自定义HashdbUserManagerFactory.setPasswordEncryptor(new MyPasswordEncryptor());自定义MyPasswordEncryptor加密器增加bcrypt依赖
<dependency> <groupId>at.favre.lib</groupId> <artifactId>bcrypt</artifactId> <version>0.9.0</version></dependency>新建MyPasswordEncryptor类
package com.qingfeng.ftpserver.config;/*** @author Administrator* @version 1.0.0* @ProjectName finder-module-ftpserver* @Description TODO* @createTime 2022年04月21日 09:34:00*/import at.favre.lib.crypto.bcrypt.BCrypt;import org.apache.ftpserver.usermanager.PasswordEncryptor;import java.security.NoSuchAlgorithmException;public class MyPasswordEncryptor implements PasswordEncryptor { public MyPasswordEncryptor() { } public String encrypt(String password) { String bcryptString = BCrypt.with(BCrypt.Version.VERSION_2Y).hashToString(10, password.toCharArray()); System.out.println(bcryptString); return bcryptString; } public boolean matches(String passwordToCheck, String storedPassword) { System.out.println("--------------matches-------------"); System.out.println(passwordToCheck); System.out.println(storedPassword); if (storedPassword == null) { throw new NullPointerException("storedPassword can not be null"); } else if (passwordToCheck == null) { throw new NullPointerException("passwordToCheck can not be null"); } else { BCrypt.Result result = BCrypt.verifyer().verify(passwordToCheck.toCharArray(), storedPassword); // return this.encrypt(passwordToCheck).equalsIgnoreCase(storedPassword); return result.verified; } } public static void main(String[] args) throws NoSuchAlgorithmException { String bcryptString = BCrypt.with(BCrypt.Version.VERSION_2Y).hashToString(10, "123456".toCharArray()); System.out.println(bcryptString); }}拓展功能二(文件类型验证)
@Override public FtpletResult onUploadStart(FtpSession session, FtpRequest request) throws FtpException, IOException { // 获取上传文件的上传路径 String path = session.getUser().getHomeDirectory(); //校验文件夹路径是否存在 viladateDir(path); // 获取上传用户 String name = session.getUser().getName(); // 获取上传文件名 String filename = request.getArgument(); logger.info("用户:'{}',上传文件到目录:'{}',文件名称为:'{},状态:开始上传~'", name, path, filename); System.out.println("用户:'" + name + "',上传文件到目录:'" + path + "',文件名称为:'" + filename + "',状态:开始上传~"); session.write(new DefaultFtpReply(550, "附件格式不正确!")); return super.onUploadStart(session, request); }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。