配置身份验证
要为 CKFinder 3 for Java 连接器配置身份验证,您需要创建一个实现 Authenticator
接口的类。得益于 路径扫描 机制,身份验证器将自动注册在 CKFinder 的内部 依赖注入容器 中。
一个从 authenticate()
方法返回 true
的基本实现(这显然**不安全**)可能如下所示
package com.cksource.ckfinder.authentication;
import com.cksource.ckfinder.authentication.Authenticator;
import jakarta.inject.Named;
@Named
public class AlwaysTrueAuthenticator implements Authenticator {
@Override
public boolean authenticate() {
return true;
}
}
您的身份验证器永远不应该简单地返回 true
。这样做会允许**任何人**上传和列出您服务器上的文件。在现实场景中,您应该实现某种请求验证机制,以确保只有受信任的用户才能上传或删除您的文件。
在下面的示例中,假设主机应用程序已为经过身份验证的用户设置了名为 allowedToAccessCKFinder
的会话属性,并且只有会话中存在 allowedToAccessCKFinder
属性的用户才能访问 CKFinder。
package com.cksource.ckfinder.authentication;
import com.cksource.ckfinder.authentication.Authenticator;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
@Named
public class CustomAuthenticator implements Authenticator {
@Inject
private HttpServletRequest request;
@Override
public boolean authenticate() {
HttpSession session = request.getSession();
return session.getAttribute("allowedToAccessCKFinder") == Boolean.TRUE;
}
}
如您在示例中看到的,当前 HttpServletRequest
实例可以被自动装配到身份验证器实例中。要详细了解 CKFiner DI 容器,请参阅 依赖注入 文章。