2010-09-01 2 views
1

Я создал HttpHandler, который будет использоваться с SWFUpload для загрузки изображений на сервер. Эта загрузка выполняется в бэкэнде администратора, поэтому пользователям необходимо пройти аутентификацию для загрузки изображений.Аутентификация в ASP.NET HttpHandler

Первоначально я сделал всю административную область отрицанием анонимных пользователей, но из-за того, что SWFUpload работает, он не будет работать корректно с аутентификацией форм и вернет код состояния 302.

Я думал, что это можно было бы сделать расположение моего обработчика общественности в Web.config и использовать context.User.Identity.IsAuthenticated в моем обработчике, чтобы определить, если пользователь вошел в систему.

Мои проблема: это то, что context.User.Identity.IsAuthenticated всегда кажется ложным в обработчике после того, как я вошел в систему. Есть ли у кого-нибудь мысли о том, почему это может быть?

ответ

0

Моя проблема была связана с некоторым кодом, добавленным в Global.asax, чтобы исправить ошибку cookie SWFUpload для браузеров, отличных от IE. Я изменил значение переменной session_cookie_name в обработчике событий Application_BeginRequest для того же имени, что и в Web.config.

Выполнение этой функции нарушает функциональность во всех браузерах. Значение переменной должно быть установлено по умолчанию «ASP.NET_SESSIONID».

1

Да, вы должны будете использовать IRequiresSessionState:

public class CustomGenericHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 
//code 
} 

Все ваши сеансы затем будет использоваться в родовом обработчика. Надеюсь, это поможет!

+0

Похоже, он все еще подходит для меня. Может быть, я делаю что-то странное здесь? – Jason

+0

Вам не нужно IRequiresSessionState, если вы используете FormsAuthentication. Это необходимо только при непосредственном доступе к сеансу. –

+0

FormsAuthentication также использует сеансы. Джейсон, это странно, поскольку это то, что я должен был сделать, чтобы заставить мой код работать. – Mouhannad

0

Какой браузер вы используете при тестировании?

Ваше решение должно работать в IE, но сбой в FireFox, поскольку SwfUpload основан на Flash, и Flash всегда отправляет файлы cookie IE на сервер с момента входа в систему (и тем самым создает cookie сессии ASP.NET) в Firefox, но SwfUpload send другой набор файлов cookie.

+0

Я использую IE для отладки, и он все еще не работает. Я также добавил предложенный код к Global.asax, как показано в образцах SWFUpload. – Jason

+0

Является ли context.User.Identity.IsAuthenticated всегда ложным или просто во время запросов SwfUpload? –

+0

Только во время запросов SWFUpload. – Jason

Смежные вопросы