Аутентификация SWFUpload - PullRequest
       10

Аутентификация SWFUpload

2 голосов
/ 16 января 2010

Я использую 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/.

Действие контроллера ниже запускается, но, как упоминалось выше, пользовательский объект не передается.

Любая помощь приветствуется!

View

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");
    }

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

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

2 голосов
/ 09 апреля 2010

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

0 голосов
/ 16 января 2010

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

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

Вы используете встроенную аутентификацию Windows?

...