spark-java: before filter 中的路径排除

spark-java: Path exclusion in before filter

我是 spark-java 框架的新手,我想知道是否有人有好的解决方案来检查用户是否已通过身份验证。 如果用户未通过身份验证,我想重定向到“/login”。 在我看来,最好的解决方案是在前置过滤器中。但是我们有一个重定向循环。

public static void main(String[] args) {
    before((req, res) -> {
        User usr = new User("DUMMY");
        if (!Authentication.isUserAuthenticated(usr)) {
            res.redirect("/login");
        }
    });
    get("/login", (req, res) -> {
        return "Sir, your credentials please!";
    });
    get("/", (req, res) -> {
        return "Welcome!";
    });
}

有没有办法排除特定路径?或者您有更好的解决方案的建议吗?

此致, 菲利普

我认为更好的方法是停止使用 http 未授权状态而不是重定向。你可以通过用 halt(401) 替换之前过滤器中的重定向来做到这一点。然后你应该在你的客户端代码中处理这个状态代码。您是否为您的客户端代码使用任何框架,例如 AngularJs ?