2014-10-28 61 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