2010-01-16 4 views
2

Я использую SWFUpload для загрузки файлов на веб-сайте ASP.NET MVC 1.0. Он работает нормально, но я не могу аутентифицировать метод загрузки. HttpContext.User.Identity.Name возвращает пустую строку. Я предполагаю, что это происходит из-за того, что фильм Flash делает сообщение. Я также использую обертку, представленную здесь: 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> 

Javascript

$(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

Это было легко разрешено с передачей параметра post, который является частью API swfUpload. Передача имени пользователя или идентификатора пользователя затем аутентифицируется вручную, используя проверку подлинности форм.

+2

Я думаю, что ваш путь может вызвать безопасную проблему ~ – Maidot

0

Я считаю, что это связано с тем, что при выполнении запросов флэш-память не сохраняется во время сеансов браузера. Вам нужно как-то явно пропустить флеш по некоторой информации о сеансе пользователя.

Один из способов, которым вы могли бы это сделать, - установить cookie. Попросите JavaScript прочитать куки-файл и передать его на flash. Затем отправьте флешку при загрузке. Таким образом, вы не передаете значение cookie с флеш-варами.

Вы используете встроенные окна auth?

2

Вы должны также проверить этот пост: http://trycatchfail.com/blog/post/2009/05/13/Using-Flash-with-ASPNET-MVC-and-Authentication.aspx
Это прекрасно объясняет, что вам нужно сделать, чтобы сохранить ваше приложение безопасно и по-прежнему использовать флэш загрузка плагинов, таких как Uploadify или SWFUpload.

+0

Это сработало для меня. Я просто должен был удостовериться, что разрешил запросы на мой URL-адрес для загрузки в web.config. Атрибут Authorize должен быть достаточным. <путь доступа = "Член/Действие/UploadImage"> <разрешение> <разрешить пользователям = "*" />