我正在嘗試使用,一個Ajax文件上傳器,Play Framework。如何將會話cookie傳遞給Uploadify?
Uploadify使用Flash對象與服務器通話...所以默認情況下它不會使用播放cookie。我想正確認證我的用戶,所以我需要通過uploadify來發送一些cookie。
有沒有人有兩個在一起工作的工作示例,或者,失敗了,一些指針?
我正在嘗試使用,一個Ajax文件上傳器,Play Framework。如何將會話cookie傳遞給Uploadify?
Uploadify使用Flash對象與服務器通話...所以默認情況下它不會使用播放cookie。我想正確認證我的用戶,所以我需要通過uploadify來發送一些cookie。
有沒有人有兩個在一起工作的工作示例,或者,失敗了,一些指針?
好吧,如果你使用httpOnly
配置,那麼它是不可能發揮的本地身份驗證的cookie傳遞到(and you should!) uploadify。
我所做的是:
1.不要用@With(Secure.class)
確保圖像控制器,而是使用一個before method
:
@Before(unless = "uploadPost")
public static void before() throws Throwable {
Secure.checkAccess();
}
2.轉嫁給兩個參數從呈現控制器承載uploadify插件的頁面:userId和signedUserId
String userIdSignature = Crypto.sign(Long.toString(user.id));
render(..., user.id, userIdSignature);
個
3.使這兩個參數uploadify,並以uploadPost
方法
public static void uploadPost(Upload upload, long userId, String userIdSignature) {
assertEquals(userIdSignature, Crypto.sign(Long.toString(userId)),
"Failed to authenticate user ID " + userId);
如果由於某種原因,你不希望客戶知道其用戶ID,簽約另一種是加密的用戶ID。
請注意,您仍然使用這種方法暴露重播攻擊,但我相信這是Play的一個普遍問題(我可能會誤解這個)。您可以添加到期簽名的過期日期以限制損失。
uploadify有一個選項叫做scriptData您可以用來發送您的authentityToken:
#{authenticityToken /}
<script>
var token = $('#input[name=authenticityToken]').val();
$('#file_upload').uploadify({
'uploader' : '/uploadify/uploadify.swf',
'script' : '/uploadify/uploadify.php',
'cancelImg' : '/uploadify/cancel.png',
'folder' : '/uploads',
'scriptData' : {'authenticyToken': token}
});
</script>
我知道scriptData。那麼你是否說已經有一個由Play生成的名爲'authenticityToken'的隱藏輸入字段?我認爲會話是通過cookie處理的。 – ripper234
啊,你的意思是使用http://www.playframework.org/documentation/current/tags#authenticityToken。另外值得一提的是內置的'#{form}'標籤自動添加了它。 http://www.playframework.org/documentation/current/tags#form – ripper234
這還不夠,至少不是安全模塊(例如'Secure.checkAccess()'需要'用戶名'在會話中)。也許我應該複製整個會話cookie?不知道我會怎麼做,但。 – ripper234
值得注意的是,如果您使用'httpOnly',則可能無法以這種方式使用Play的標準身份驗證。我正在考慮放棄'httpOnly'。 – ripper234
此外,有關與其他web框架中的Uploadify類似問題的相關問題:http://stackoverflow.com/questions/1729179/uploadify-session-and-authentication-with-asp-net-mvc和http:// stackoverflow。 com/questions/1284666/sessions-and-uploadify – ripper234