spark java:before筛选器中的路径排除
我是spark java框架的新手,我想知道是否有人有好的解决方案来检查用户是否经过身份验证。 如果用户未通过身份验证,我想重定向到“/login”。 在我看来,最好的解决办法是使用前置过滤器。但是我们有一个重定向循环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
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”下声明了不需要对用户进行身份验证的资源。