Клиентское приложение загружает аудиофайл в виде фрагментов на сайт MVC3. Для этого клиент использует HttpWebRequest
POST
.
На сервере у меня есть следующие действия контроллера:
[Authorize]
[HttpPost]
public JsonResult RecieveChunk(string id, [ModelBinder(typeof(AudioChunkModelBinder))] byte[] audio)
{
//Process chunk
var chunk = new AudioChunk
{
ThoughtId = Guid.Parse(id),
Data = audio
};
//Process chunk by BL
return new JsonResult {Data = "Success"};
}
В настоящее время встроенная AspNetMemebershipProvider
обрабатывает авторизацию, поэтому клиентское приложение должно сначала пройти аутентификацию на странице входа в систему, получить cookie-файл в CookieContainer
, а затем сделать запрос на сервер для загрузки фрагмента данные.
Я хочу, чтобы клиенты также могли анонимно загружать аудиофайлы на сервер без необходимости предварительной регистрации. Код клиентского приложения будет выдавать один и тот же идентификатор при каждой загрузке файла с одного устройства.
Я хочу, чтобы обе категории пользователей совместно использовали одно и то же действие RecieveChunk
, чтобы выполнить это. Но они должны быть авторизованы либо анонимно (всего guid
), либо с помощью комбинации входа в систему / прохода.
Могу ли я иметь два разных контроллера, связанных с двумя разными провайдерами аутентификации? Третий контроллер, имеющий помеченное действие [Authorize]
, разрешит действие, если один из провайдеров предоставил пользователю cookie (или другой метод аутентификации).
Возможно ли это вообще в ASP.NET MVC3?