Клиентское приложение загружает аудиофайл в «куски» на сайт MVC3. Для этого клиент использует HttpWebRequest
POST
.Имеет ли несколько провайдеров аутентификации одновременно в приложении ASP.NET MVC3?
На сервере У меня есть следующие действия контроллера:
[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
обрабатывает разрешение, так что приложение клиент должен сначала пройти аутентификацию на странице входа в систему, получить куки в a CookieContainer
, а затем сделать звонок на сервер для загрузки фрагмента данных.
Я хочу, чтобы клиенты могли также анонимно загружать аудиофайлы на сервер, без предварительной регистрации. Они представляют собой клиентский код приложения каждый раз, когда файл загружается с одного и того же устройства.
Я хочу, чтобы обе категории пользователей разделили одно и то же действие RecieveChunk
, чтобы сделать это. Но они должны быть авторизованы либо анонимно (всего лишь guid
), либо с помощью комбинации входа/выхода.
Могу ли я иметь два разных контроллера, связанных с двумя разными поставщиками аутентификации? Третий контроллер, который имеет отмеченное действие [Authorize]
, допустит действие, если один из провайдеров предоставил пользователю cookie (или какой-либо другой метод auth).
Возможно ли вообще в ASP.NET MVC3?
Из того, что вы говорите здесь, ваша загрузка действие не требует авторизации, и поэтому не должно иметь этого атрибута. Вместо этого вы должны использовать код в действии, чтобы определить, вошли ли они в систему или нет, и действовать соответствующим образом. –
Да, это то, что я делаю. Поэтому я предполагаю, что ответ просто ... Нет, только одна реализация провайдера членства действует одновременно в масштабе всего приложения? –
Умм, нет; это не то, что вы делаете. У вас есть атрибут Authorize. Кроме того, анонимные пользователи по определению * не аутентифицированы *. Итак, что вы ищете, это * не * несколько поставщиков членства. –