2014-10-28 77 views
0

我正在用Java编写Play 2.3.2应用程序。我使用的模块有一些我的应用程序需要的路线。在我的路线文件,我包括它们与下面的语句:检查播放中模块导入的所有URI的权限

->  /recommendation/  recommendationsystem.Routes 

我需要检查与/recommendation开始所有的URI的权限。如果用户被认证,则执行该请求,否则他被重定向到主页。

我已经有一个注解来实现检查权限的操作。

我该如何在Play中制作?

在此先感谢。

回答

1

您可能有interceptGlobal类中的所有请求,并检查特定资源是否需要验证。

import play.GlobalSettings; 
import play.libs.F; 
import play.mvc.Action; 
import play.mvc.Http; 
import play.mvc.Result; 

import java.lang.reflect.Method; 

public class Global extends GlobalSettings { 

    @Override 
    public Action onRequest(Http.Request request, Method actionMethod) { 
     if (request.path().startsWith("/recommendation") && isNotAuthenticated()) { 
      return new Action.Simple() { 
       @Override 
       public F.Promise<Result> call(Http.Context context) throws Throwable { 
        return F.Promise.pure(redirect("/")); 
       } 
      }; 
     } 
     return super.onRequest(request, actionMethod); 
    } 

    private boolean isNotAuthenticated() { 
     // put your authentication check logic here 
     return true; 
    } 

} 
+0

嗨,这段代码不适合我。我认为问题是所有以/推荐开头的路由都会自动重定向到模块(用Scala编写)。我怎么解决这个问题??该模块不能有Global.scala类对象。 – 2014-10-29 15:40:57

+0

全局类应该在你的主模块中定义。确保它放在根应用程序目录中,或在配置文件中设置路径:application.global =“com.your.package.Global” – 2014-10-29 15:56:18

+0

全局文件位于我的主项目中,但所有以“ /建议“绕过我的Global.java类的onRequest方法。在其他情况下,onRequest方法被正确调用。 – 2014-10-29 16:02:39