あなたの質問を理解したら、承認のみで特定のパスにルーティングしたいですか?
この場合、WebAPI 2 の一部としてルーティングを使用できます。
内にWebAPIConfig.cs
次の構成を追加します
public static void Register(HttpConfiguration config)
{
//Enable attribute routing
config.MapHttpAttributeRoutes();
//... additional configuraitons
}
次に、API コントローラー内で、デフォルトとは無関係にルートを設定し、必要な属性を追加できます。
[Route("apiname/authroizedLogin")]
[Authorize(Roles="admin")]
public void IHttpActionResult(string username, stringpassword)
{
try
{
dosomething...
return Ok(somecontext);
}
catch(exception e)
{
return BadResponse(e.message);
}
}
これは、WebAPI 2 のルートに関する詳細情報のリンクです。
編集
ロールへのアクセスに関して。実装によって異なります。個人的には、global.asx を使用するのが好きではありません。db 要求がより頻繁に行われるからです。実際の推奨事項を作成するには、実装に関する詳細情報が必要です。ただし、いくつかのオプションがあります。クレーム ベースの認証を使用している場合、ロールはクレームの一部にすることができ、http コンテキスト/リクエストの一部として API に渡されます。ここから、ID を次のように導出できます。
public long RoleId
{
get
{
var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
string id = identity.Claims.Where(c => c.Type == "http://myschema.com/app/claims/roleid")
.Select(c => c.Value).SingleOrDefault();
//return 0 if no claim is located
return (!String.IsNullOrEmpty(id)) ? Convert.ToInt32(id) : 0;
}
set
{
_userId = value;
}
}
クレームを使用していない場合、別のオプションとして、ユーザーが認証されると、暗号化して Cookie として保存できるFormsAuthenticaitonTicketを生成することができます。