Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spark java:before筛选器中的路径排除_Java_Spark Java - Fatal编程技术网

spark java:before筛选器中的路径排除

spark java:before筛选器中的路径排除,java,spark-java,Java,Spark Java,我是spark java框架的新手,我想知道是否有人有好的解决方案来检查用户是否经过身份验证。 如果用户未通过身份验证,我想重定向到“/login”。 在我看来,最好的解决办法是使用前置过滤器。但是我们有一个重定向循环 public static void main(String[] args) { before((req, res) -> { User usr = new User("DUMMY"); if (!Authentication.isU

我是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!";
    });
}
有没有排除特定路径的方法?或者你有更好的解决方案吗

致以最良好的祝愿,
Philipp

我认为更好的方法是停止http未授权状态,而不是重定向。您可以通过将before过滤器中的重定向替换为
halt(401)
来实现。然后,您应该在客户端代码中处理此状态代码。您是否为客户端代码使用了任何框架,如AngularJs?

这听起来不错。我没想过。我想用AngularJS,但以前没用过。需要检查如何做到这一点。我发现它可以启发您的服务器端实现。对于您的客户机代码,您可以从中获得灵感(我在第一次实现AngularJs Auth时使用了本教程)。感谢写这两篇文章的人。感谢Laercio提供的帮助/建议/建议。我只是想知道如果我使用AngularJS实现登录,我需要发布数据。但是我也会遇到before过滤器。您如何设法避免这种情况,或者我如何检查登录凭据?在我的情况下,有公共和受保护的资源。因此,我在“/api/protected”下声明了所有需要对用户进行身份验证的路由,并在(“/api/protected/*”,(请求,响应)->{/*检查是否经过身份验证*/halt(401,“走开!”;})之前声明了我的过滤器。我在“/api/public”下声明了不需要对用户进行身份验证的资源。