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();
}
}
}
添加處理請求的控制器的代碼 – roterl 2014-09-30 15:02:06