我正在尝试使用,一个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