2010-01-16 2 views
2

SWFUpload를 사용하여 ASP.NET MVC 1.0 웹 사이트에서 파일을 업로드합니다. 잘 작동하지만 업로드 방법을 인증 할 수 없습니다. HttpContext.User.Identity.Name은 빈 문자열을 반환합니다. 나는 플래시 무비가 게시물을 만들고 있기 때문에 이것이라고 가정하고있다. 여기에 제공된 래퍼 (http://blog.codeville.net/2008/11/24/jquery-ajax-uploader-plugin-with-progress-bar/)도 사용하고 있습니다.SWFUpload 인증

아래의 컨트롤러 동작이 시작되지만 사용자 개체 위에있는 언급이 통과되지 않습니다.

도움을 주시면 감사하겠습니다.

보기

HTML

  <form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo"> 
       <input type="file" id="userPhoto_Photo" name="userPhoto_Photo" /> 
      </form> 

자바 스크립트

$(function() { 
     $("#userPhoto").makeAsyncUploader({ 
      upload_url: '/Media/Upload', 
      flash_url: '<%= Url.Content("~/Content/Flash/swfUpload-2.2.0.1.swf") %>', 
      file_size_limit: '1 MB', 
      file_types: '*.jpg; *.png; *.gif', 

      button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE, 
      button_width: 210, 
      button_height: 35, 
      button_image_url: '<%= Url.Content("~/Content/Images/UploadPhoto.png") %>', 
      button_text: '', 
button_cursor: SWFUpload.CURSOR.HAND, 
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT 

     }); 
    }); 

컨트롤러 액션

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Upload() 
    { 
     if (Request.Files.Count == 1) 
     { 
      //Upload work 
     } 
     return RedirectToAction("Index", "Profile"); 
    } 

답변

2

이것은 swfUpload API의 일부인 post 매개 변수를 전달하면 쉽게 해결할 수있었습니다. 사용자 인증 또는 사용자 ID 전달은 양식 인증을 사용하여 수동으로 인증됩니다.

+2

내 생각에 보안 문제가 발생할 수 있습니다 ~ – Maidot

0

플래시가 요청할 때 브라우저 세션을 지속하지 않기 때문입니다. 어떻게 든 명시 적으로 사용자 세션에 관한 정보를 따라 플래시 패스를 가져야합니다.

당신이 할 수있는 한 가지 방법은 쿠키를 설정하는 것입니다. 자바 스크립트에서 쿠키를 읽고 플래시로 전달하십시오. 그런 다음 업로드 할 때 플래시를 보내십시오. 이렇게하면 플래시 막대를 사용하여 쿠키 값을 전달하지 않습니다.

Windows 통합 인증을 사용하고 있습니까?

2

또한이 게시물을 체크 아웃해야합니다 : http://trycatchfail.com/blog/post/2009/05/13/Using-Flash-with-ASPNET-MVC-and-Authentication.aspx
을 그것은 완벽하게 당신의 보안 응용 프로그램을 유지하고 여전히 Uploadify 또는 swfupload 같은 플래시 업로드 플러그인을 사용하기 위해 수행해야 할 내용이 설명되어 있습니다.

+0

이것은 나를 위해 일했습니다. 또한 web.config에서 업로드 URL에 대한 요청을 허용했는지 확인해야했습니다. Authorize 특성으로 충분해야합니다. <위치 경로 "회원/액션/UploadImage가"=> <인증> 가있는 <허용 = "*"/>