クライアントアプリケーションが、オーディオファイルを「チャンク」で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
し、サーバーへの呼び出しを行い、データのチャンクをアップロードします。
クライアントは、事前に登録する必要なく、匿名でオーディオファイルをサーバーにアップロードできるようにします。クライアントアプリケーションコードは、ファイルが同じデバイスからアップロードされるたびに同じGUIDを提供します。
両方のカテゴリのユーザーが同じRecieveChunk
アクションを共有して欲しいと思います。しかし、それらは匿名で(ちょうど)、またはログオン/パスの組み合わせでauthrizedする必要があります。
2つの異なるコントローラを2つの異なる認証プロバイダにリンクできますか? [Authorize]
アクションがマークされている3番目のコントローラーは、いずれかのプロバイダーがユーザーにCookie(またはその他の認証方法)を与えた場合にアクションを許可します。
一般的にASP.NET MVC3では可能ですか?
:だからあなたのような何かができる
:
そして、ここでは
RequireHttpsAttribute
実装ですアクションは認可を必要としない*ため、その属性を持つべきではありません。代わりに、アクション内のコードを使用して、ログインしているかどうかを判断し、それに応じて行動する必要があります。 –はい、それは私がやっていることです。だから私は答えがちょうどいいと仮定しています - いいえ、メンバーシッププロバイダーの1つの実装だけがアプリケーション全体で同時に動作しますか? –
うーん、いいえ。それはあなたがやっていることではありません。そこにはAuthorize属性があります。また、匿名ユーザーは定義上、*認証されません。だから、あなたが探しているのは、複数のメンバーシップ・プロバイダーではありません。 –