Contribute to this guideReport an issue

guide配置身份验证

要为 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 容器,请参阅 依赖注入 文章。