2014-09-30 64 views
2

我需要通過我寫的Play應用程序的命令行上傳文件。 的問題是,我需要一些認證(I應用於教程中描述的Secured機械),並且當我使用curl命令:使用cURL在Play應用程序上發佈文件

curl -i -F name=test -F [email protected] http://example.org/upload 

當它試圖驗證用戶是否具有應用程序將引發一個NullPointerException執行上傳的權限。

我設法登錄使用捲曲(感謝this answer):

curl -i --data "[email protected]&password=somepassword" http://example.org/login 

,我得到了答案:

HTTP/1.1 303 See Other 
Location:/
Set-Cookie: PLAY_SESSION="891c38b687bf198d31af51cc61647f8339d30657-email=some.email%40address.com"; Path=/; HTTPOnly 
Content-Length: 0 

現在,我怎麼能使用這個cookie發佈我的檔案?

一些代碼,既然你問

public class Secured extends Security.Authenticator { 

    @Override 
    public String getUsername(Context ctx) { 
     return ctx.session().get("email"); 
    } 

    @Override 
    public Result onUnauthorized(Context ctx) { 
     return redirect(routes.Application.login()); 
    } 

    public static boolean isReadOnly() { 
    return UserType.READ_ONLY.equals(User.find.where().eq("email",Context.current().request().username()).findUnique().userType); 
    } 
} 



public class Upload extends Controller { 

    public static Result upload(String mode) throws IOException { 
     if(!Secured.isReadOnly()) { 

       (Handle the form to upload the file)    

     } else { 
      return controllers.Utils.generalForbidden(); 
     } 
    } 
} 
+0

添加處理請求的控制器的代碼 – roterl 2014-09-30 15:02:06

回答

2

可以保存您通過

curl -c cookie.jar -i --data "[email protected]&password=somepassword" http://example.org/login 

從你的登錄請求,一個名爲「cookie.jar」文件中獲取爲了餅乾要使用cookie,只需做

curl -b cookie.jar http://example.org/your_endpoint 
相關問題